在Python中定制的单词边界的正则表达式

问题描述 投票:1回答:1

我使用了一个名为findlist到文本中返回某些字符串的所有位置的列表,用正则表达式来查找单词边界的功能。但我想忽略的字符(,只考虑其他的字边界,因此,将在split但不是在var split找到split(a)。有没有办法做到这一点?

import re

def findlist(input, place):
    return [m.span() for m in re.finditer(input, place)]

str = '''
var a = 'a b c'
var split = a.split(' ')
'''
instances = findlist(r"\b%s\b" % ('split'), str)

print(instances)
python regex
1个回答
2
投票

您可以检查是否存在与负( lookahead尾字边界后(?!\()

instances = findlist(r"\b{}\b(?!\()".format('split'), s)
                             ^^^^^^ 

全词被发现后,(?!\()将触发,如果有立即(到发现字的右边,比赛将失败。

Python demo

import re

def findlist(input_data, place):
    return [m.span() for m in re.finditer(input_data, place)]

s = '''
var a = 'a b c'
var split = a.split(' ')
'''
instances = findlist(r"\b{}\b(?!\()".format('split'), s)

print(instances) # => [(21, 26)]
© www.soinside.com 2019 - 2024. All rights reserved.