C++;“字符串”的正则表达式;M0.89“; 试图在C++正则表达式中表示以下内容:M0.89/M1.78或M0.9 "M|m([0-9].[0-9]+)"

C++;“字符串”的正则表达式;M0.89“; 试图在C++正则表达式中表示以下内容:M0.89/M1.78或M0.9 "M|m([0-9].[0-9]+)",c++,regex,C++,Regex,正则表达式检查程序显示它不工作。我做错了什么 谢谢大家! “(M | M)([0-9]\\.[0-9]+)”就是你要找的不带转义的\将匹配任何字符,而不仅仅是一个文字句点,并且需要在M | M周围加上括号才能按预期捕获 如果您不想将M作为一个组捕获,您可以使用“[mM]([0-9]\\\.[0-9]+)”问题在于您使用交替运算符的方式。在左侧(第1个备选方案),它只希望从字面上匹配字母“M”。在右边(第二个备选方案),它在寻找“m”,后跟一个数字字符→ 任何单个字符,然后是另一个数字字符 任何简

正则表达式检查程序显示它不工作。我做错了什么

谢谢大家!

“(M | M)([0-9]\\.[0-9]+)”
就是你要找的<代码>不带转义的
\
将匹配任何字符,而不仅仅是一个文字句点,并且需要在
M | M
周围加上括号才能按预期捕获


如果您不想将
M
作为一个组捕获,您可以使用
“[mM]([0-9]\\\.[0-9]+)”

问题在于您使用交替运算符的方式。在左侧(第1个备选方案),它只希望从字面上匹配字母“M”。在右边(第二个备选方案),它在寻找“m”,后跟一个数字字符→ 任何单个字符,然后是另一个数字字符

任何简单的方法都可以在此处使用字符类:

"[mM][0-9]\\.[0-9]+"
注意:要匹配文本
,需要在其前面加上两个反斜杠