Простой вопрос:
Каков шаблон для словесного символа \w
в c#, .NET?
Моя первая мысль была то, что это соответствует [A-Za-z0-9_]
и документация говорит мне:
Character class Description Pattern Matches \w Matches any \w "I", "D", "A", "1", "3" word character. in "ID A1.3"
который не очень полезен.
И \w
кажется, соответствует äöü
, также.Что еще? Существует ли лучшее (точное) доступное определение?
Из документации:
Словесный символ: \w
\w
соответствует любому словесному символу. Словесный символ является членом любой из категорий Unicode, перечисленных в следующей таблице.
Ll
(буква, строчная)Lu
(буква, прописная)Lt
(буква, заглавная)Lo
(буква, другая)Lm
(буква, модификатор)Nd
(число, десятичная цифра)Pc
(пунктуация, соединитель)
- Эта категория включает десять символов, наиболее часто используемым из которых является символ НИЗКОЙ ЛИНИИ (_), u+005F.
Если указано поведение, соответствующее ECMAScript,
\w
эквивалентен[a-zA-Z_0-9]
.
В основном это соответствует всему, что можно считать интуитивным определением буквы в различных сценариях, плюс подчеркивание и несколько других странностей.
Вы можете найти полный список (по крайней мере, для BMP) в следующем крошечном фрагменте PowerShell:
0..65535 | ?{([char]$_) -match '\w'} | %{ "$_`: " + [char]$_ }