Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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正则表达式:转义反向引用_Python_Regex_Escaping_Set_Backreference - Fatal编程技术网

Python正则表达式:转义反向引用

Python正则表达式:转义反向引用,python,regex,escaping,set,backreference,Python,Regex,Escaping,Set,Backreference,以下是我的情况: re.sub(r'([^\\])', r'\1[\W\1]*', string) 很简单,我想在(自身)之后附加[\W(自身)],因为自身是一组字符(可以是特殊的)。这就是为什么我需要把它放在一个集合中,去掉所有特殊的含义。然而,我的团队可以是一个集合。我知道嵌套集不起作用。我如何避开/移除方括号以安全地将我的团队放入集合 我的另一个尝试是使用\1(\W |\1)*,但我需要转义组中的字符,而不转义组中可能的方括号。我该怎么做 这是一个进退两难的局面。我不知道该如何解决这个问

以下是我的情况:

re.sub(r'([^\\])', r'\1[\W\1]*', string)
很简单,我想在(自身)之后附加[\W(自身)],因为自身是一组字符(可以是特殊的)。这就是为什么我需要把它放在一个集合中,去掉所有特殊的含义。然而,我的团队可以是一个集合。我知道嵌套集不起作用。我如何避开/移除方括号以安全地将我的团队放入集合

我的另一个尝试是使用\1(\W |\1)*,但我需要转义组中的字符,而不转义组中可能的方括号。我该怎么做

这是一个进退两难的局面。我不知道该如何解决这个问题,该走哪条路。请帮忙

多谢各位

编辑: 我跳过了一步。在匹配字符但\([^\]部分)并替换为解释的表达式后,我有时需要将其替换为一组类似的字符。所以,“a”变成“[a@]”,“s”变成“[s5$]”等等。。。
这个问题真的错了。但是我解决了这个问题,所以如果您仍然试图理解我之前写的内容,请不要:)

您可以在中使用函数作为替换。这将允许您在执行替换之前调用匹配项:

def escape_repl(match):
    return '{0}[\W{0}]*'.format(re.escape(match.group(1)))

re.sub(r'([^\\])', escape_repl, string)
例如:

>>> print re.sub(r'([^\\])', escape_repl, '[^$]')
\[[\W\[]*\^[\W\^]*\$[\W\$]*\][\W\]]*

我想这就是你想做的,但从你的问题来看,这有点不清楚。如果这不是您想要的,请提供一些示例字符串和预期结果。

您能否提供一些示例字符串,说明哪些内容需要更换以及如何更换?我不明白您在尝试做什么。假设,
string='a'
,您的代码将返回
'a[\\Wa]*'
。听起来您想使用一个正则表达式将输入正则表达式更改为另一个正则表达式;对吗?此外,是否存在定义捕获组的任何限制?现在可以捕获任何不是反斜杠的字符。是否要捕获单个角色?还是要将
字符串中的每个字符(不是反斜杠)替换为“[\W]*”?没有人理解您的问题。请澄清。对不起,我的问题跳过了一步。不过我解决了我自己的问题。谢谢。是的,非常不清楚。但我想我用另一种方式解决了我的问题。无论如何,谢谢你。