正则表达式进一步检查

时间:2010-11-21 04:59:13

标签: python regex

我正在处理一个检查字符串的正则表达式,它是否是一个函数。 我的正则表达式用于检查如下:

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

3 个答案:

答案 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” 感谢