Используйте готовый класс персонажей и ограничивайте его дальше - PullRequest
7 голосов
/ 14 декабря 2011

Множество готовых классов символов доступно в регулярных выражениях Perl, таких как \d или \S, или в новомодных гроккерах Юникода, таких как \p{P}, что соответствует символам пунктуации .

Теперь предположим, что я хотел бы сопоставить все знаки препинания \p{P} (довольно много, а не то, что вы хотите ввести вручную) - все, кроме одного, все, кроме хорошегостарая комма (или запятая, ,).

Есть ли способ указать это требование, кроме расширения удобного класса символов и удаления коммы вручную?

Ответы [ 2 ]

9 голосов
/ 14 декабря 2011
$ unichars -au '\p{P}' | wc -l
598

Двойное отрицание:

/[^\P{P},]/

$ unichars -au '[^\P{P},]' | wc -l
597

«И» через взгляд вперед / назад:

/\p{P}(?<!,)/

$ unichars -au '\p{P}(?<!,)' | wc -l
597

unichars

7 голосов
/ 14 декабря 2011

Попробуйте это

[^\P{P},]

Это отрицательный символьный класс, который соответствует всем, кроме перечисленных символов.

\P{P} отрицательный \p{P}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...