我需要将标签 '###' 的单词更改为大写。让我们在所有文本中假设一个这样的字符集:[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 和字符串的开头/结尾之间
