在Python中,如何通过忽略特定情况的模式提取子字符串?
假设我有一个字符串:在Python中,如何通过忽略特定情况的模式提取子字符串?,python,regex,Python,Regex,假设我有一个字符串: s = 'qwe rty uio' 我想通过模式[a-z]+提取所有条目,忽略单词rty,仅借助正确的正则表达式模式(无任何预处理)。我该怎么做 我试过这个: pattern = re.compile(r'^(?!rty)[a-z]+') result = pattern.findall(s) print(result) # ['qwe'] 但它只找到了第一个条目。。。哪个模式正确?要提取除rty单词以外的所有小写ASCII字母整词,请使用 r'\b(?!rty\b)
s = 'qwe rty uio'
我想通过模式[a-z]+
提取所有条目,忽略单词rty
,仅借助正确的正则表达式模式(无任何预处理)。我该怎么做
我试过这个:
pattern = re.compile(r'^(?!rty)[a-z]+')
result = pattern.findall(s)
print(result) # ['qwe']
但它只找到了第一个条目。。。哪个模式正确?要提取除
rty
单词以外的所有小写ASCII字母整词,请使用
r'\b(?!rty\b)[a-z]+'
看
详细信息
-单词边界\b
-如果当前位置右侧紧接着一个(?!rty\b)
子字符串,后跟一个尾随字边界(如果可以有任何字符,但不能是小写ASCII字母,则可以用rty
替换此(?![a-z])
)\b
-1个或多个小写ASCII字母[a-z]+
对于这个特殊的情况,你甚至不需要预先考虑。只需在空白处拆分并使用列表:
import re
s = 'qwe rty uio'
words = [word for word in re.split(r'\s+', s) if word != 'rty']
print(words)
# ['qwe', 'uio']
请参阅。在运行regex-
模式之前,可以删除rty
。findall(s.replace('rty','')
。另外,如果要匹配除rty
以外的任何整词,请尝试。我只希望使用正确的正则表达式模式。你的模式不起作用,“不起作用”怎么说。目标是什么?提取所有没有rty
或不等于rty
的单词?它起作用了,我没有仔细复制它。。。
import re
s = 'qwe rty uio'
words = [word for word in re.split(r'\s+', s) if word != 'rty']
print(words)
# ['qwe', 'uio']