Как преобразовать регулярное выражение \ w + Чтобы дать мне целые слова в Unicode - не только ASCII?Regex word-breaker in unicode
Я использую .net
Как преобразовать регулярное выражение \ w + Чтобы дать мне целые слова в Unicode - не только ASCII?Regex word-breaker in unicode
Я использую .net
Вы должны взглянуть на http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx#ECMAScript
Там также хорошая Шпаргалка для использования регулярных выражений в .net: http://regexlib.com/CheatSheet.aspx
В .NET \w
будет соответствовать символам Unicode, которые Буквы или цифры в Юникоде. Например, он будет соответствовать ì
и Æ
.
Чтобы просто совместить символы ASCII, вы можете использовать [a-zA-Z0-9]
.
Это работает, как ожидалось для меня
string foo = "Hola, la niña está gritando en alemán: Maüschen raus!";
Regex r = new Regex(@"\w+");
MatchCollection mc = r.Matches(foo);
foreach (Match ma in mc)
{
Console.WriteLine(ma.Value);
}
Он выводит
Hola la niña está gritando en alemán Maüschen raus
Вы используете .Match() вместо .Matches()?
Другое возможное объяснение состоит в том, что у вас есть символ без слов в том, что вы ожидаете получить, как запятая.
«Официальный» идентификатор Юникода для букв - \p{L}
, для номеров \p{N}
. Поэтому для полноты, в случаях, когда \w
не распространяется на буквы/цифры в Юникоде, эквивалент для \w+
будет [\p{L}\p{N}\p{Pc}]+
. Не забывайте, что символы подчеркивания и другие символы «символа пунктуации» также содержатся в \w
(так что вы можете сами решить, сохранить их или нет).
Для дальнейшей полноты, '\ w' включает в себя не только подчеркивание, но и целую строку' '{pc}' препинательного типа :) – Andomar
Спасибо Andomar, отредактировали :) –
какой язык? Тайская? : D – YOU