Skip to main content
 首页 » 编程设计

python之在开始和结束处匹配相同的模式两次

2025年05月04日25sky-heaven

我需要将标签 '###' 的单词更改为大写。让我们在所有文本中假设一个这样的字符集:[a-zA-Z\s]

我这样做:

re.sub(r'(^|\s)([A-Z]+)(\s|$)', r'\1###\3', 'Hello PYTHON WORLD') 

但不是获取 'Hello ### ###',而是返回 'Hello ### WORLD'。

问题是 re.sub 匹配所有匹配项,然而,第 1 组和第 3 组等于,但 re.sub 没有使用它两次来匹配 PYTHON 和 WORLD。

我该如何解决?我正在使用 python 3。

equals:几乎相等,在 begin/end 的情况下,它们在 ^ 和 $ 上有所不同,但这不是问题所在。

请您参考如下方法:

要用 ### 替换所有 大写 单词,请使用以下方法:

s = 'Hello PYTHON WORLD' 
replaced = re.sub(r'\b([A-Z]+)\b', r'###', s) 
print(replaced) 

输出:

Hello ### ### 

\b 被定义为 \w 和 \W 字符之间的边界(反之亦然),或者在 \w 和字符串的开头/结尾之间