2013-03-28 64 views
-1

這個問題讓我發瘋 我需要排除帶有重音的這個詞,我有問題。特別我認爲\b不工作好與像áéíóúñ 例如口音的信件,我有這樣的正則表達式:正則表達式和口音

\b(m[ií]s*|m[ií][ao]s*|t[úu]s*|s[u]s*)\b 

的話:

MI - 比賽

MI - 不匹配

MIAS - 比賽

米亞斯 - 不匹配

我嘗試使用\s而不是\b但我匹配空格 如何解決此問題?

感謝

+0

你是想只匹配*不*有口音的話嗎? – Bohemian 2013-03-28 02:20:55

+0

你試圖匹配的字符串只能看起來像它有重音符號嗎?在HTML轉義字符,而不是? – 2013-03-28 02:22:11

回答

0

糾正我,如果我錯了,但如果你使用的是Java,口音被認爲是非單詞字符,所以你可以用\檢測W¯¯VS \ W。無論您使用何種語言,都可能出現這種情況。

+0

我正在使用PHP 5 – Nicopag 2013-03-28 02:19:00

1

此正則表達式將匹配沒有任何音字母的所有單詞:

\b[a-zA-Z']+\b 

包括引號字符意味着撇號的話 - 比如「不能」 - 也匹配。

請注意,正則表達式\w不適合,因爲它包含數字和下劃線字符。

+0

是的。但我需要將口音與口音搭配,比如tú和tus以及mí和mís。但不是mísa – Nicopag 2013-03-28 02:27:52

0

從你的問題和評論是聽起來像:

  • 給出字符串:MI,恩,土族,心肌梗死,心肌梗死,MIAS,是的。但我需要將口音與口音搭配,比如tú和tus以及mí和mís。但不米薩 -
  • 比賽:MI,恩,土族,心肌梗死,心肌梗死,MIAS
  • 不匹配:米亞斯

這PowerShell中顯示匹配字符串正在爲所有你已經案件上市

$Matches = @() 
$String = 'mi, tú, tus, mí, mís, mias, Yes. But I am needing to match words with accent, like tú and tus and mí and mís. BUT not mísa – ' 
([regex]'(?=\b)(mí|m[ií]s*|m[ií][ao]s*|t[úu]s*|s[u]s*)(?=\b)').matches($String) | foreach { 
    write-host "at $($_.Groups[1].Index) = '$($_.Groups[1].Value)'" 
    } # next match 

產生

at 0 = 'mi' 
at 4 = 'tú' 
at 8 = 'tus' 
at 13 = 'mí' 
at 17 = 'mís' 
at 22 = 'mias' 
at 83 = 'tú' 
at 90 = 'tus' 
at 98 = 'mí' 
at 105 = 'mís'