Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的regex sub-对字符进行分组,以标识3个字符,并仅更改其中一个字符_Python_Regex - Fatal编程技术网

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