假设我有一个字符串:
{{1}}
我想通过模式{{1}}提取所有条目,仅在正确的正则表达式模式的帮助下忽略单词{{1}}(没有任何预处理)。我该怎么做?
我试过这个:
{{1}}
但它只发现了第一个条目......哪种模式是正确的?
答案 0 :(得分:1)
要使用rty
字以外的小写ASCII字母提取所有整个单词,请使用
r'\b(?!rty\b)[a-z]+'
请参阅regex demo。
<强>详情
\b
- 字边界(?!rty\b)
- 如果在当前位置的右侧紧跟着rty
子字符串,后跟一个尾随字边界(如果可以有任何字符但是小写字母),则会导致匹配失败的负向前瞻ASCII字母,您可以将此\b
替换为(?![a-z])
)[a-z]+
- 一个或多个小写ASCII字母。以下是Python demo:
import re
rx = r"\b(?!rty\b)[a-z]+"
s = "qwe rty uio"
print(re.findall(rx, s))
# => ['qwe', 'uio']
答案 1 :(得分:0)
对于这种特殊情况,你甚至不需要前瞻。只是拆分空格并使用列表理解:
import re
s = 'qwe rty uio'
words = [word for word in re.split(r'\s+', s) if word != 'rty']
print(words)
# ['qwe', 'uio']