Php 在其他组中使用上一个表达式
在上面的正则表达式中,组1和组3包含相同的表达式。Php 在其他组中使用上一个表达式,php,regex,Php,Regex,在上面的正则表达式中,组1和组3包含相同的表达式。 在另一组中,除了重新键入同一表达式外,还有其他方法可以使用该表达式吗?如果您使用的是PCRE,则可以执行以下操作: /([a-zA-Z0-9\-])(@)([a-zA-Z0-9\-])/ 如果要重复使用组,可以: /([a-zA-Z0-9\-])(@)(?1)/ (?1)将使用组1中的模式。现在让我们润色一下您的正则表达式: 删除不必要的组:/([a-zA-Z0-9\-])@(?1)/ 我们不需要逃避:/([a-zA-Z0-9-])@(?1)
在另一组中,除了重新键入同一表达式外,还有其他方法可以使用该表达式吗?如果您使用的是PCRE,则可以执行以下操作:
/([a-zA-Z0-9\-])(@)([a-zA-Z0-9\-])/
如果要重复使用组,可以:
/([a-zA-Z0-9\-])(@)(?1)/
(?1)
将使用组1中的模式。现在让我们润色一下您的正则表达式:
/([a-zA-Z0-9\-])@(?1)/
/([a-zA-Z0-9-])@(?1)/
/([a-z0-9-])@(?1)/i
/([a-z0-9-])@(?1)/i
我在使用php,在regex101上尝试它似乎不起作用。啊,我明白了,非常感谢:D@user3639768:当您询问有关regex的问题时,放置语言标签很重要,因为不同的语言具有不同的regex功能。感谢您的精彩解释:我想知道是否设置了i
修饰符,我是否需要A-Z
内部[A-zA-Z0-9\-]
?如果设置了i
修饰符,我们不需要A-Z
,因为A-Z
已经指定,它将匹配不区分大小写的。
/([a-zA-Z0-9\-])@(?1)/
^
() not needed around the @ sign