我想要一个正则表达式来匹配下面的句子。
myfunc(L"try my number 8 and value%s ",value);
myfunc(L"but %s is not true",word);
myfunc(L"his name is %s ",name);
等等。
但我不想匹配没有%的句子
myfunc(L"It is raining");
即只有具有%的句子应该匹配。我尝试了以下模式,但它也匹配没有%的句子。
myfunc[(L"(A-Z)*(a-z)*(0-9)*(%)+(a-z)+(A-Z)*(a-z)*(0-9)*(,)+(A-Z)*(a-z)*(0-9))]
myfunc[(%)+]
和
myfunc[(+(%)+)+]
答案 0 :(得分:2)
你不需要一个正则表达式...或者如果你真的觉得你需要使用一个,那么它需要的只是"%"
。
为什么不尝试以下方法?
if '%' in myString:
## We have a match!
编辑DSM的评论(现在您实际上已经说过这个问题与Python无关):从您的更新中看起来您实际上想要匹配整个事物,即“func(...,”)使用第一个参数中的百分号,这是一个字符串。请尝试以下正则表达式:
myfunc\(L\".*?%.*?\",[a-zA-Z]*\)
或者,要将第一个参数字符串中的其他字符限制为字母数字和空格,您可以尝试这个,这可能比上面的更强大:
myfunc\(L\"[a-zA-Z0-9\s]*%[a-zA-Z0-9\s]*\",[a-zA-Z]*\)
这将确保整个字符串与您的函数原型形状匹配,包括字符串前的“L”,字符串中的“%”和结束括号前的第二个字母参数。