python中的regex sub-对字符进行分组,以标识3个字符,并仅更改其中一个字符
我试图在大文本中找到符号“当它的前面紧跟着一个单词或字符时。然后我想用这个符号替换它,而不改变前后的单词/数字:” 我试过这个:python中的regex sub-对字符进行分组,以标识3个字符,并仅更改其中一个字符,python,regex,Python,Regex,我试图在大文本中找到符号“当它的前面紧跟着一个单词或字符时。然后我想用这个符号替换它,而不改变前后的单词/数字:” 我试过这个: text7 = re.sub(r'(\w)"(\w)', r"$1\'$2", text6) 因为“它”这个词我现在得到的只是1美元2美元。我想要的是“它是” 有什么建议吗?您可以使用\b“\b替换为”\b是一个单词边界,在任何地方匹配以下匹配项(不使用字符):^\w | \w$\w\w | \w python中的p.S.\1或\g用于引用捕获组,而不是$1,因为
text7 = re.sub(r'(\w)"(\w)', r"$1\'$2", text6)
因为“它”这个词我现在得到的只是1美元2美元。我想要的是“它是”
有什么建议吗?您可以使用\b“\b
替换为”
\b
是一个单词边界,在任何地方匹配以下匹配项(不使用字符):^\w | \w$\w\w | \w
python中的p.S.
\1
或\g
用于引用捕获组,而不是$1
,因为它将被逐字解释。有关更多信息,请参阅python文档。使用lookback和lookahead;它们只需查看,而不必被替换文本修改:
text7 = re.sub(r'(?<=\w)"(?=\w)', "'", text6)
text7=re.sub(r'(?有关re
模块的帮助,我建议在解释器中运行help(re)
(或从命令行运行pydoc re
),它的布局非常方便,而且我发现它比在线文档更容易理解
解决方案:
>>> import re
>>> text6 = 'it"s'
>>> print(re.sub(r'(\w)"(\w)', r"\1'\2", text6))
it's
您使用了$1
来匹配组1,但在Python中它是\1
。此外,在替换字符串中的单个引号前面还有一个额外的\
>>> import re
>>> text6 = 'it"s'
>>> print(re.sub(r'(\w)"(\w)', r"\1'\2", text6))
it's