Python正则表达式错误:“无法引用打开的组”

时间:2018-11-11 19:13:59

标签: regex regex-group

我正在为Reddit自动主持人创建规则。它从YAML配置文件获取其规则,并将正则表达式解释为Python regex。

我正在尝试使以下正则表达式起作用:

</p><ul><li>(None)</li></ul><h2><span style="font-size:18px;">Authorized Administrators and Users</span></h2><pre><b>Authorized Administrators&#58;</b>
jim (you)
    password&#58; (blank/none)
bob
    password&#58; Littl3@birD
batman
    password&#58; 3ndur4N(e&amp;home
dab
    password&#58; captain

<b>Authorized Users&#58;</b>
bag
crab
oliver
james
scott
john
apple
</pre><h2><span style="font-size:18px;">Competition Guidelines</span></h2>

当我在https://pythex.org/上对其进行测试时,它可以完美实现我想要的功能。

不幸的是,当我将相同的正则表达式复制到配置文件中时,表达式末尾的组引用导致错误:

  

(https?://[\\w\\d:#@%/;$()~_?+-=\\.&]+\\.\\w{2,6})([\\S\\s]*\\1) 生成了无效的正则表达式:无法引用未处理的正则表达式   组

我还尝试了此版本,并进行了所有转义,只是为了确保角色没有任何干扰:

body (regex)

但是我仍然遇到相同的错误。有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

我设法通过将组选择更改为\2而不是\1来解决了这个问题。

事实证明,YAML或AutoModerator会在整个表达式周围自动加上括号,因此其中的任何组引用必须比您最初期望的多1。

我本来以为这是问题所在,所以尝试了上面说明的修复程序,但是由于AutoModerator代码的另一个问题,该修复程序似乎没有起作用。现在一切都解决了;感谢您的耐心配合和帮助。