2013-03-27 16 views
1

正則表達式的話,我有這樣的正則表達式與口音

\b(t[úu]s*)\b 

,我有這句話:

 
tu (works) 
tú (doesn't work) 
tus (works) 
tús (works) 

爲什麼我不能匹配

+0

我正在使用PHP和我正在測試http://gskinner.com/RegExr/ – Nicopag 2013-03-27 12:57:23

+1

,但它的匹配:http://rubular.com/r/CS7wRf7y4N – 2013-03-27 12:58:01

+0

也許這個問題可以幫助:http:// stackoverflow .com/q/2133758/1649067 – 2013-03-27 13:00:12

回答

3

如果正則表達式不匹配,則兩個字符不同。

「U急性」 可以被表示爲單個字符ú(U + 00FA)或者通過組合u(U + 0075)與組合重音符字符(U + 0301),其給出了一個類似的尋找ú

您必須轉換您的輸入字符串或在您的正則表達式中包含兩個變體,有關詳細信息,請參見http://www.regular-expressions.info/unicode.html

2

爲什麼表達式不匹配

即表達式不匹配因爲\b似乎並不承認ú作爲字字符,並因此非單詞字符之間使用時失敗。

你可以使用這樣的事情,而不是:

/(?<!\p{L})(t[úu]s*)(?!\p{L})/u 

\p{L}一個Unicode字母匹配。

+0

嗨,我試試這個(\ p {L})(t [úu] s *)(\ p {L})/ u但不起作用:( – Nicopag 2013-03-28 02:15:43

+0

@ user2088434,爲什麼不復制整個表達式?你錯過了幾個部分。 – Qtax 2013-03-28 13:09:33