从一开始我就会警告你们:我是正则表达式的初学者。考虑到这一点让我们开始,我正在使用C ++ Deelx库。
我有这个文本传递我的正则表达式:
char tempStr[] = "Ésta è À ç À Ária õ ûma CÓïSSSê";
我的目的是删除所有重音字符。在非常好的网站上阅读正则表达式: http://www.regular-expressions.info/completelines.html
我创建了这个表达式来替换大写重音“A”的所有出现:
//^\b.*(À|Á|Â|Ã|Ä|Å)\b.*$
令我惊讶的是它不起作用。我对这个表达的理解是:“在整个字符串中搜索,零或多个这些字符的出现”。
现在,当我使用这个表达式时,工作完成了:
(À|Á|Â|Ã|Ä|Å)
让我想知道的是:我没有确定任何事情,而是没有确定任何数量的字母和作品,并且在第一种情况下没有任何事情发生。为什么呢?
答案 0 :(得分:1)
这个正则表达式:
^\b.*(À|Á|Â|Ã|Ä|Å)\b.*$
说找:
^
)\b
).*
)(À|Á|Â|Ã|Ä|Å)
)\b
).*
)因此它只匹配只有一个大写重音A的字符串。
另一个正则表达式:
(À|Á|Â|Ã|Ä|Å)
说找:
(À|Á|Â|Ã|Ä|Å)
)如果全局应用正则表达式(通常使用全局标志g
,某些语言的某些正则表达式函数默认应用它),那么它将多次执行正则表达式。
但是,如果您的意图是删除所有重音字符,那么可能有更好的方法来列出所有重音字符。取决于你想要的东西,你可以例如仅匹配你想要允许的字符,并删除其余的字符。