C ++ Regex for 0 = 250 | 18000 = 300 | 26000 = 0.86M

时间:2015-06-17 00:20:58

标签: c++ regex

我正在尝试在C ++中编写一个与以下任何语句匹配的正则表达式:

(([0-9]+=[0-9]+)|((\|[0-9]+=[0-9]|.[0-9]+)[Mm]))((\|[0-9]+=[0-9]+)|((\|[0-9]+=[0-9]|.[0-9]+)[Mm])?)+

我写了以下内容并使用regexr.com进行了检查:

(([0-9]+=[0-9]+)|((\|[0-9]+=[0-9]\\.[0-9]+)[Mm]))((\|[0-9]+=[0-9]+)|((\|[0-9]+=[0-9]\\.[0-9]+)[Mm])?)+

看起来它有效,但我不明白一件事。我以为我在“。”之前需要双反斜杠,比如:

{{1}}

我在其他帖子中被告知。但是,根据在线测试人员的说法,这是不正确的。

有人可以解释一下吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

这取决于您正在使用的正则表达式的风格。正则表达式没有通用规则,一些主要的区别是当角色需要转义时。

我不知道您的在线测试人员的味道是什么,但这是c ++ 11用于正则表达式的内容:http://www.cplusplus.com/reference/regex/ECMAScript/

根据这一点,您需要在正则表达式中转义所有文字.|字符。