我正在处理一个检查字符串的正则表达式,它是否是一个函数。 我的正则表达式用于检查如下:
regex=r' \w+[\ ]*\(.*?\)*'
成功检查字符串是否包含函数。 但它抓取包含第一个barcket值的正常字符串,例如“test(test of test)”。
所以我必须进一步检查,如果函数名和括号之间有一个空格,那么就不会被捕获为匹配。所以我做了另一个检查,如下所示:
regex2=r'\s'
它成功运作,可以区分“test()”和“test()”。 但是现在我必须维持另一个条件,即如果括号后面没有空格(例如.test()abcd),它就不会将它作为一个函数捕获。正则表达式应该只是当它像“ test()abcd“。 但我尝试使用不同的正则表达式,遗憾的是那些不起作用。 她提到检查字符串的一件事是在找到匹配时插入到列表中,在第二步中它只检查字符串的部分。例如: 字符串:这是一个python函数test()abcd 首先它将检查字符串的函数以及何时查找匹配函数test() 然后只发送“test()”表示“test”和“()”之间是否存在差距。 在最后一步中,我必须找到“test()”和“abcd”之间是否有任何差距。如果有间隙,它将不会显示匹配作为函数,否则作为字符串的正常部分。 我应该如何编写这种情况的正则表达式?
正则表达式必须在以下情况下显示:
1.test() abc
2.test(as) abc
3.test()
在以下情况下,不会视为一项功能:
1.test (a)abc
2.test ()abc
答案 0 :(得分:1)
(\w+\([^)]*\))(\s+|$)
基本上,你要确保它以空格或行尾结束。
BTW kiki工具对于调试Python re:http://code.google.com/p/kiki-re/
非常有用答案 1 :(得分:0)
regex=r'\w+\([\w,]+\)(?:\s+|$)'
答案 2 :(得分:0)
我已经解决了这个问题,我刚刚使用正则表达式为“()”的字符串做了准备:
regex = r' \w+[\ ]*\(.*?\)\w*'
然后检查函数名和括号之间的空格,以及括号后面的间隙,我使用了带有正则表达式的跟随函数:
def testFunction(self, func):
a=" "
func=str(func).strip()
if a in func:
return False
else:
a = re.findall(r'\w+[\ ]*', func)
j = len(a)
if j<=1:
return True
else:
return False
所以它现在可以区分“test()abc”和“test()abc” 感谢