我一直在努力创建一个正则表达式,它将区分对象定义并在Python中调用该对象。目的是语法高亮。
这是需要解决的情况:(数字表示行)
0 def otherfunc(vars...):
1 pass
2
3 otherfunc(vars...)
我感兴趣的是匹配对象的名称,但是如果在同一行中的def之前的任何地方都没有。上面代码的结果应该是:
" otherfunc",line:3
正则表达式是否能够做到这样的事情?
编辑:我只关心一次扫描/搜索一行。
答案 0 :(得分:0)
你可以使用负面的lookbehind。这匹配一个前面没有原子的原子。因此,在您的情况下,您要查找otherfunc
之前没有"def"
(?<!def\s)otherfunc
我在这里使用PCRE正则表达式。
UPDATE wp_posts SET post_excerpt = CONCAT('This is the description for ',productTitle) WHERE post_type = 'product'
答案 1 :(得分:0)
我喜欢理查兹的答案,但我也会考虑植物和意图的有效功能名称字符。所以这就是我提出的:
(?<!(def\s))(?<=^|\s)[a-zA-Z_][\w_]*(?=\()
请参阅此working sample on Rexex101
匹配有效python function names if
(?<!(def\s))
他们没有关注def
和空白和 (?<=^|\s)
要么在一行的开头,要么在一个空格之后(这是你得到的最接近的,因为lookbehinds不支持通配符说明符)和 (
)请注意,我不是一个phyton dev,所以为了简单[a-zA-Z_][\w_]*
匹配有效的phyton 2.x函数名,你可以将表达式的这一部分扩展到phyton 3.x,我不知道of;)