我正在尝试在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}}
我在其他帖子中被告知。但是,根据在线测试人员的说法,这是不正确的。
有人可以解释一下吗?
非常感谢!
答案 0 :(得分:1)
这取决于您正在使用的正则表达式的风格。正则表达式没有通用规则,一些主要的区别是当角色需要转义时。
我不知道您的在线测试人员的味道是什么,但这是c ++ 11用于正则表达式的内容:http://www.cplusplus.com/reference/regex/ECMAScript/
根据这一点,您需要在正则表达式中转义所有文字.
和|
字符。