繁体   English   中英

如何多次使用字符串变量来制作正则表达式

[英]How to use string variable multiple times to make regex expression

只是想在我的正则表达式变量的构造中多次使用一个字符串变量。 我想匹配一个单词,无论它是单词本身还是在末尾附加一个数字(最多两位数)的同一个单词例如,假设我有这个:

string str1 = "MyWord";    //I want this to pass
string str2 = "MyWord2";   //I want this to pass
string str3 = "MyWor";     //I want this to fail

//This works, but I don't want to use a string literal, I want to use str1
const regex re("MyWord|MyWord\\d{1,2}");

//I need the variable to be used multiple times in the regex
const regex re(str1 | str1\\d{1,2}) 


if (regex_match (str2, re )){
  cout << "We have a match";
}

您需要将str1变量与表示正则表达式其余部分的字符串文字连接起来,例如:

const regex re(str1 + "|" + str1 + "\\d{1,2}");

或者,您可以使用 C++20 的std::format() (或等效的)避免str1的重复,例如:

const regex re(format("{0}|{0}\\d{{1,2}}", str1));

然而,话虽这么说,因为你真的只是在寻找一个后面有一个可选数字的单词,你可以将正则表达式简化为:

const regex re(str1 + "\\d{0,2}");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM