Python中带有自定义单词边界的Regex

2024-04-25 09:12:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个名为findlist的函数返回文本中某个字符串的所有位置的列表,并使用regex查找单词边界。但是我想忽略字符(,只考虑其他单词的边界,这样它将在var split中找到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)

Tags: instances函数字符串文本re列表inputvar
1条回答
网友
1楼 · 发布于 2024-04-25 09:12:55

您可以检查尾随单词边界后面是否有一个(和一个负的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)]

相关问题 更多 >