在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)
    -如果当前位置右侧紧接着一个
    rty
    子字符串,后跟一个尾随字边界(如果可以有任何字符,但不能是小写ASCII字母,则可以用
    (?![a-z])
    替换此
    \b
  • [a-z]+
    -1个或多个小写ASCII字母
以下是一份报告:


对于这个特殊的情况,你甚至不需要预先考虑。只需在空白处拆分并使用列表:

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']