2024-05-15 11:42:17 发布
网友
我只想匹配单词,如果单词两边最多有一个野生字符,后面是空格,或者两边都没有。例如,我希望ring匹配'ring'、'ring'、'tring'、'ring'、'ringt'、'ringt'、'ring'、'tringt'、'tringt'
但不是: 'ttring','ringttt','ttringtt'
到目前为止,我已经:
[?\s\S]ring[?\s\S][?!\s]
有什么建议吗
如果我理解正确,这应该是:
(?:^|\s)\S?ring\S?(?:\s|$)
(?:^|\s)-此非捕获组确保模式前面有空格或开头
(?:^|\s)
\S?匹配零个或一个非空白字符
\S?
ring匹配文字ring
ring
(?:\s|$)-零宽度正向前瞻确保匹配前面有空格或在末尾
(?:\s|$)
示例:
In [92]: l = ['ring ', ' ringt', ' ringt ', ' ring ', \ 'tringt ', 'tringt ', 'ttring', 'ringttt', 'ttringtt'] In [93]: list(filter(lambda s: re.search(r'(?:^|\s)\S?ring\S?(?:\s|$)', s), l)) Out[93]: ['ring ', ' ringt', ' ringt ', ' ring ', 'tringt ', 'tringt ']
如果我理解正确,这应该是:
(?:^|\s)
-此非捕获组确保模式前面有空格或开头\S?
匹配零个或一个非空白字符ring
匹配文字ring
(?:\s|$)
-零宽度正向前瞻确保匹配前面有空格或在末尾示例:
相关问题 更多 >
编程相关推荐