关于Regex比赛

时间:2013-07-22 15:25:00

标签: regex regex-lookarounds

从一开始我就会警告你们:我是正则表达式的初学者。考虑到这一点让我们开始,我正在使用C ++ Deelx库。

我有这个文本传递我的正则表达式:

char tempStr[] = "Ésta è À ç À Ária õ ûma CÓïSSSê";

我的目的是删除所有重音字符。在非常好的网站上阅读正则表达式: http://www.regular-expressions.info/completelines.html

我创建了这个表达式来替换大写重音“A”的所有出现:

//^\b.*(À|Á|Â|Ã|Ä|Å)\b.*$

令我惊讶的是它不起作用。我对这个表达的理解是:“在整个字符串中搜索,零或多个这些字符的出现”。

现在,当我使用这个表达式时,工作完成了:

(À|Á|Â|Ã|Ä|Å)

让我想知道的是:我没有确定任何事情,而是没有确定任何数量的字母和作品,并且在第一种情况下没有任何事情发生。为什么呢?

1 个答案:

答案 0 :(得分:1)

这个正则表达式:

^\b.*(À|Á|Â|Ã|Ä|Å)\b.*$

说找:

  • 字符串的开头(^
  • 后跟单词边界(\b
  • 后跟任何字符无或多次(.*
  • 后跟一个大写的重音A((À|Á|Â|Ã|Ä|Å)
  • 后跟单词边界(\b
  • 后跟任何字符无或多次(.*
  • 后跟字符串
  • 的结尾

因此它只匹配只有一个大写重音A的字符串。

另一个正则表达式:

(À|Á|Â|Ã|Ä|Å)

说找:

  • 一个大写的重音A((À|Á|Â|Ã|Ä|Å)

如果全局应用正则表达式(通常使用全局标志g,某些语言的某些正则表达式函数默认应用它),那么它将多次执行正则表达式。

但是,如果您的意图是删除所有重音字符,那么可能有更好的方法来列出所有重音字符。取决于你想要的东西,你可以例如仅匹配你想要允许的字符,并删除其余的字符。