-1

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

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

1 回答 1

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”、字符串中的“%”以及右括号之前的第二个字母参数。

于 2013-04-18T11:41:33.903 回答