Регулярные выражения могут работать с различными языками?

Английский язык, конечно, является легкой задачей для regex, потому что это - то, в/для чем это было первоначально разработано:

Регулярные выражения могут понять этот набор символов?

Французский язык входит в некоторые символы с диакритикой, которые я не уверен, как соответствовать против - т.е. è, и e оба считает словесными символами regex?

Выражения Les régulières peuvent comprendre ce jeu de caractères?

Японский язык не содержит то, против чего я знаю как regex словесные символы соответствовать.

正規表現は、この文字を理解でき、設定 ?

9
задан Alan Moore 3 March 2010 в 14:59
поделиться

7 ответов

Краткий ответ: да .

В частности, это зависит от того, поддерживает ли ваш механизм регулярных выражений совпадения в Юникоде (как описано здесь ).

Такие совпадения могут значительно усложнить ваши регулярные выражения, поэтому я могу порекомендовать прочитать этот учебник по регулярным выражениям Unicode (также обратите внимание, что сами реализации Unicode могут быть довольно беспорядочными, поэтому вам также может быть полезно прочитать Джоэла Спольски. ] статья о внутренней работе наборов символов).

7
ответ дан 4 December 2019 в 21:49
поделиться

Насколько я знаю, нет никакого конкретного шаблона, который можно использовать, например, [a-zA-Z] для соответствия "è", но вы всегда можете использовать их по отдельности, например, [a-zA-Zè正]

Очевидно, что это может сделать ваш regexp огромным, но вы всегда можете контролировать это, добавляя ваши строки в переменные и передавая только переменные в выражения.

1
ответ дан 4 December 2019 в 21:49
поделиться

Это зависит от реализации и набора символов. Обычно ответ - «Да», но с вашей стороны может потребоваться дополнительная настройка.

В Perl, например, значение таких вещей, как \ w, изменяется выбранной локалью (используйте локаль).

0
ответ дан 4 December 2019 в 21:49
поделиться

Этот поток SO может помочь. Он включает классы символов Unicode, которые можно использовать в регексе (например, [Ll] - это все строчные буквы, независимо от языка).

0
ответ дан 4 December 2019 в 21:49
поделиться

дело не в регулярном выражении, а во фреймворке, который его выполняет. java и .net, я думаю, очень хороши в работе с юникодом. так что "è и e оба считаются символами слова в regex" - это правда.

0
ответ дан 4 December 2019 в 21:49
поделиться

/ [\ p {Latin}] / должен, например, включать латинский алфавит. Вы можете получить полное объяснение и ссылку здесь .

0
ответ дан 4 December 2019 в 21:49
поделиться

Вообще говоря, регулярное выражение больше подходит для машинно-читаемого текста, чем для читаемого человеком текста. Во многих отношениях это более общий ответ на весь XML с помощью регулярных выражений; регулярное выражение по самой своей природе неспособно правильно анализировать человеческий язык, потому что язык более сложен, чем то, что вы используете для его анализа.

Если вы хотите разобраться в человеческом языке (включая английский), вам следует использовать инструмент анализа языка или даже ИИ, а не просто регулярные выражения.

1
ответ дан 4 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: