Какие встроенные классы регулярных выражений поддерживаются Java - PullRequest
7 голосов
/ 28 декабря 2011

... при использовании в шаблонах типа "\\p{someCharacterClass}".
Я использовал / видел некоторые:

  • Lower
  • Верхний
  • InCombiningDiacriticalMarks
  • ASCII

Что такое полный список всех поддерживаемых встроенных символов? Где это задокументировано? Каковы точные значения?

Edited ...

Кажется, есть много ответов "RTFM", ссылающихся на javadoc для Pattern. Это первое место, которое я посмотрел, прежде чем задавать этот вопрос. Точно так же, как все ясно, в javadoc для Pattern не упоминается ни один из перечисленных выше классов.

«Правильный» ответ будет упоминать «InCombiningDiacriticalMarks» где-то на странице, и не будет какой-то расплывчатой ​​ссылкой на «Стандарты Юникода».

Ответы [ 5 ]

10 голосов
/ 28 декабря 2011

Документация для Pattern говорит в разделе «Поддержка Unicode»:

Поддерживаются категории стандарта Unicode в версии, определенной классом Character,Названия категорий определены в Стандарте, как нормативные, так и информативные.Имена блоков, поддерживаемые в Pattern, являются действительными именами блоков, принятыми и определенными UnicodeBlock.forName.

Документация для UnicodeBlock.forName гласит:

Имена блоков определяются стандартом Unicode.

На http://unicode.org есть FAQ Где найти полный список блоков Unicode? :

A: Блоки Unicode и их названия являются нормативной частьюстандарта Unicode.Точный список всегда поддерживается в одном из файлов База данных символов Unicode , Blocks.txt.

Наконец, в Blocks.txt есть строка:

0300..036F; Combining Diacritical Marks

Эти символы можно найти в кодовой диаграмме Объединение диакритических знаков (из Диаграммы кодов символов Unicode 6.0 ).

1 голос
/ 28 декабря 2011

Pattern API говорит, что нужно придерживаться уровня регулярных выражений 1, как определено http://www.unicode.org/reports/tr18/

Есть три хороших таблицы (поиск UCD.html) и посмотрите на сам UCD.html.

0 голосов
/ 10 сентября 2013

Эта страница содержит некоторые хорошие детали для нескольких популярных классов, таких как:

  • \p{L} или \p{Letter}: любые буквы на любом языке.
  • \p{M} или \p{Mark}: символ, предназначенный для объединения с другим символом (например, ударения, умлауты, заключенные в рамки и т. Д.).
  • \p{N} или \p{Number}: любой тип числового символа в любом скрипте.
0 голосов
/ 28 декабря 2011

Посмотрите в javadocs для Pattern class.

0 голосов
/ 28 декабря 2011

Спецификация http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html. В некоторых случаях это относится к TUS для конкретной версии, этот материал можно найти по адресу http://unicode.org.

...