重音字符和正则表达式
Accented characters and regular expression
我有这个正则表达式:
('b)(emozioni|gioia|felicità)('b)
在如下所示的字符串中:
emozioni emozioniamo felicità felicitàs
它应该与第一个和第三个单词匹配。相反,它匹配第一个和最后一个。我认为这是因为重音字符。我尝试了这个替代方案:
('b)(emozioni|gioia|felicità's)('b)
但只有当它后面有另一个词时,它才匹配"felicità"。因此,只有在这种背景下才具体:
emozioni emozioniamo felicità felicitàs
而不是在另一个:
emozioni emozioniamo felicitàs felicità
我在这里找到了一篇关于法语重音字符的文章(所以在单词的开头),我遵循了第二个答案。如果有人知道更好的解决方案,我们非常欢迎。
单词边界'b
仅适用于'w
字符类中的字符,即[0-9a-zA-Z_]
,因此您不能在像à
这样的重音字符之后放置'b
。
您可以使用前瞻来解决您的案例中的问题:
felicità(?='s|$)
或更短:
felicità(?!'S)
(或'W
按照@Sniffer建议代替's
,但您冒着风险匹配以下内容:felicitàà
)
尝试以下替代方法:
'b(emozioni|gioia|felicità)(?='W|$)
这将匹配您列出的任何单词,只要这些单词中的任何一个后跟非单词字符'W
或字符串结尾$
。
正则表达式 101 演示
相关文章:
- 不同浏览器中的空白字符正则表达式行为
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 用于匹配不带字符的单词的正则表达式
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 正则表达式搜索一个空格,后跟一个字符
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- javascript正则表达式来识别所有特殊字符
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何使用正则表达式限制字符串的第一个字符
- 为什么以下正则表达式不删除 ## 字符
- 模仿负查找以匹配JavaScript正则表达式中没有紧跟特定字符的模式
- 匹配某个字符后所有文本的正则表达式是什么
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- Javascript 正则表达式字符范围 A-z 匹配插入符号 (“^”)
- 为什么在正则表达式字符可选时找不到匹配项
- 我什么时候需要转义正则表达式字符集中的字符(在 [] 内)
- Javascript正则表达式字符匹配
- 字符串用正则表达式替换正则表达式字符类
- 正则表达式字符识别