2009-11-25 56 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