2009-11-25 52 views

回答

1

在.NET中,\w将匹配的Unicode字符Unicode字母或数字。例如,它将匹配ìÆ

要匹配ASCII字符,您可以使用[a-zA-Z0-9]

1

可正常工作对我来说

 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()输出?

另一个可能的解释是,你有一个非单词字符在你期望收到,像一个逗号。

0

字母的“官方”Unicode标识符为\p{L},数字为\p{N}。因此,为了完整起见,如果\w未扩展为Unicode字母/数字,则\w+的等效项将为[\p{L}\p{N}\p{Pc}]+。不要忘记,\w中也包含下划线和其他“标点符号连接器”字符(因此您可以自行决定是否保留它们)。

+0

为了进一步完整性,'\ w'不仅包括下划线,还包括整个'\ p {Pc}'标点符号连接器类别:) – Andomar 2009-11-25 12:39:45

+0

感谢Andomar,编辑:) – 2009-11-25 13:19:03