这个问题让我发疯了
我需要用重音排除这个词,我遇到了问题。特别是我认为\b
对于带有áéíóúñ的重音的字母不起作用
例如,我有这个正则表达式:
\b(m[ií]s*|m[ií][ao]s*|t[úu]s*|s[u]s*)\b
单词:
mi - 匹配
mí - 不匹配
mias - 匹配
mías - 不匹配
我尝试使用\s
代替\b
,但我匹配空格
我该如何解决这个问题?
由于
答案 0 :(得分:1)
此正则表达式将匹配所有没有任何重音字母的单词:
\b[a-zA-Z']+\b
包含引号char表示带有撇号的单词 - 例如“不能” - 也是匹配的。
请注意,正则表达式\w
不适用,因为它包含数字和下划线字符。
答案 1 :(得分:0)
如果我错了,请纠正我,但如果您使用的是java,则重音被视为非单词字符,因此您可以使用\ w vs \ W进行检测。无论您使用何种语言,情况都可能如此。
答案 2 :(得分:0)
您正在尝试匹配unicode字符,根据您使用的语言,这些字符可能更复杂或更简单。此链接可能有助于您更好地理解:
答案 3 :(得分:0)
从你的问题和评论听起来像是:
此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'