分组中间的ReGeX否定算子

分组中间的ReGeX否定算子,regex,Regex,我想问一下这个正则表达式背后是否有任何逻辑: ([\d^5]{1}) ([^\D5]{1}) 它映射了所有数字,但不应该忽略5吗 我知道当我想忽略5时,我可以使用这个正则表达式: ([\d^5]{1}) ([^\D5]{1}) 然而,我很好奇,在分组中间使用否定算符是否有逻辑,还是应该总是在开头使用。< P>因为我不能注释不够多。 ([0-46-9]) 通常对于否定,需要在[]之后加上“^”,因此忽略5的正则表达式如下所示 [^5] 至于您的查询,您要求正则表达式匹配一个数字,然后是

我想问一下这个正则表达式背后是否有任何逻辑:

([\d^5]{1})
([^\D5]{1})

它映射了所有数字,但不应该忽略5吗

我知道当我想忽略5时,我可以使用这个正则表达式:

([\d^5]{1})
([^\D5]{1})

然而,我很好奇,在分组中间使用否定算符是否有逻辑,还是应该总是在开头使用。

< P>因为我不能注释不够多。
([0-46-9])
通常对于否定,需要在[]之后加上“^”,因此忽略5的正则表达式如下所示

[^5]
至于您的查询,您要求正则表达式匹配一个数字,然后是行的开头,然后是5。^在[]之外表示行/字符串的开头


综上所述,我对正则表达式并不陌生,但我对否定的理解并不那么强烈。

有些正则表达式引擎支持字符类交叉。例如,您可以使用:

[\d&&[^5]]
语法是:

[class&&[intersect]]
引用

Java、JGsoft V2和Ruby 1.9及更高版本支持字符类相交。这使得匹配两组字符中必须存在的任何单个字符变得很容易。其语法为[class&&[intersect]]。您可以在相交字符类中使用完整的字符类语法

如果相交的类不需要反插入符号,那么Java和Ruby允许您省略嵌套的方括号:[class&&intersect]


无论如何,大多数引擎都没有这种逻辑,因此当必须对字符类求反时,必须使用语法[^…],但您不能更改“^”以排除某些字符并允许其他字符,您需要扩展您的正则表达式,而不是使用快捷方式。

为什么不测试它?我测试了它并编写了结果。我只是不明白为什么要编写结果?它映射了所有数字。有些正则表达式引擎我想我见过类似于t的东西firebirds regex方言中的帽子支持中间否定,但大多数不支持中间否定,例如PCRE或使用不同的语法,例如Java-那么你在这里谈论的是什么语言/工具?谢谢,这是我需要的答案谢谢你有趣的回答。不过这不是我问的问题的答案,但很高兴知道这样的错误是存在的