2015-12-08 10 views
17

Dlaczego wyrażenie wyrażeń regularnych [[: alfa:]] również pasuje do chińskich słów w Notepad ++? Na przykład, 中文Dlaczego [[: alpha:]] w Notepad ++ pasuje również do chińskich słów?

Według dokumentacji Notepad ++

alpha: litery ASCII

chińskie słowa nie są litery ASCII, więc dlaczego wyrażenie regex dopasować je?

+0

Gdzie używasz tego kodu, że nie znajduje '中文'? Może potrzebować modyfikatora 'u'. https://regex101.com/r/zT4mO1/1 – chris85

+0

@ chris85 Oh, więc został zaprojektowany, aby pasował do chińskich słów? Ale myślałem, że [[: alpha:]] pasuje tylko do liter ASCII. Czy chińskie słowa są literami ASCII? – user15964

+0

Spójrz na http://www.regular-expressions.info/posixbrackets.html. Jeśli masz tylko obsługę ascii, będzie to tylko ascii. – chris85

Odpowiedz

18

Klasa [:alpha:] zwykle zawiera znaki alfabetyczne. To byłoby znacznie więcej niż litery ASCII, w zależności od kodowania, którego używasz.

Podczas gdy Notepad++ documentation stwierdza "litery ASCII", oznacza to również, że wyrażenia są realizowane za pomocą Boost C++ Regex library. Dokumentacja potwierdza, że ​​[:alpha:]has the standard, broader meaning in this library.

To wydaje się być tylko błędem w dokumentacji Notepad ++.

Jeśli chcesz dopasować litery ASCII, chciałbym użyć czegoś takiego jak [a-zA-Z] jako punktu wyjścia.

+0

Więc chińskie słowa są alfabetyczną postacią? Muszę powiedzieć, że to rozszerzenie wcale nie jest użyteczne. – user15964

+16

To, że nie jest * twoim * alfabetem, nie oznacza, że ​​nie jest częścią alfabetu! – Troyseph

+3

@ Troyseph Choć zgadzam się z tobą, technicznie język chiński nie ma alfabetu; jest to system pisma logograficznego z uzupełniającą listą elementów fonetycznych z ustaleniami. = P – That1Guy

Powiązane problemy