C++ 0=250|18000=300|26000=0.86M 的正则表达式

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

本文关键字:86M 正则表达式 26000 18000 C++      更新时间:2023-10-16

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

0=250
26000=0.86M
0=250|18000=300
0=250|18000=300|26000=0.86M

我写了以下内容并与 regexr.com 核对:

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

看起来它正在工作,但我不明白一件事。我以为我需要在"."之前使用双反斜杠,例如:

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

正如我在另一篇文章中被告知的那样。但是,根据在线测试人员的说法,这是不正确的。

有人可以解释一下吗?

多谢!

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

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

您需要根据

此转义正则表达式中的所有文字.|字符。