如何使用正则表达式匹配绝对值 我在C++中的正则表达式中有绝对值的问题。这就是我所说的模式: std::tr1::regex loadAbsNM("load -|M\\((\\d+)\\)|"); // load -|M(x)|

如何使用正则表达式匹配绝对值 我在C++中的正则表达式中有绝对值的问题。这就是我所说的模式: std::tr1::regex loadAbsNM("load -|M\\((\\d+)\\)|"); // load -|M(x)|,c++,regex,C++,Regex,我试图使用std::tr1::regex\u匹配(IR、result、loadNM)进行匹配。但它并不匹配任何东西,即使它应该匹配 我正在使用Visual Stuido 2010编译器 程序的缩短版(上面包括iostream和regex) intmain() { std::string IR=“加载-| M(x)|”; std::smatch结果; std::tr1::regex loadAbsNM(“加载-| M\\(\\d+\)\)|”; if(std::tr1::regex_匹配(IR、r

我试图使用
std::tr1::regex\u匹配(IR、result、loadNM)
进行匹配。但它并不匹配任何东西,即使它应该匹配

我正在使用Visual Stuido 2010编译器

程序的缩短版(上面包括iostream和regex)

intmain()
{
std::string IR=“加载-| M(x)|”;
std::smatch结果;
std::tr1::regex loadAbsNM(“加载-| M\\(\\d+\)\)|”;
if(std::tr1::regex_匹配(IR、result、loadAbsNM))
{
int x=2;

std::cout注意,从代码中,您不会有匹配项。字母
x
与正则表达式
\d+
不匹配

另外,我不太确定在管道字符前面是否需要反斜杠。您可能知道,管道(
)用于分隔可能的条目:
(a | b)
表示a或b

最后,由于它们的结尾是一个管道,因此表达式与空字符串匹配,这通常是个坏主意

我建议这样做:

"load -\\|M\\((\\d+)\\)\\|"
但这并不匹配:

"load -|M(x)|"
您需要使用数字,而不是“x”,如:

"load -|M(123)|"

显示一个完整的、最小的编译和运行的程序,并显示问题。您使用的是什么编译器?您使用的是gcc吗?如果是这样,
regex
实现仅在(目前尚未发布)gcc-4.9中提供。如果您使用的是其他编译器,请发布@Praetorian-必须喜欢另一个首字母缩写。(我喜欢它)@RYKER:这里有一个:)@user3010769:欢迎来到SO!请尽快阅读该页面。现在,请阅读。
"load -|M(123)|"