用于将句子与特定符号(如%)匹配的正则表达式

时间:2013-04-18 11:37:31

标签: regex notepad++

我想要一个正则表达式来匹配下面的句子。

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[(+(%)+)+]

1 个答案:

答案 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”,字符串中的“%”和结束括号前的第二个字母参数。