我想问一下这个正则表达式背后是否有任何逻辑:
([^\D5]{1})
它映射所有数字,但不应该忽略5?
我知道当我想忽略5时我可以使用这个正则表达式:
{{1}}
但是我很好奇是否在分组过程中使用否定运算符背后有任何逻辑,或者它应该始终在开头使用。
答案 0 :(得分:1)
因为我不能评论(不够代表)。试试以下
([0-46-9])
通常对于否定你需要^之后的[,所以正则表达式忽略5的看起来像
[^5]
至于你的查询,你要求正则表达式匹配一个数字,然后是行的开头,然后是5. ^在[]之外表示行/字符串的开头。
上面带着一点点盐,我不是正则表达的新手,但我并不是那么强烈的否定。
答案 1 :(得分:0)
有一些正则表达式引擎支持字符类交集。例如,您可以使用:
[\d&&[^5]]
语法为:
[class&&[intersect]]
Java,JGsoft V2以及Ruby 1.9及更高版本支持字符类交集。它可以轻松匹配必须存在于两组字符中的任何单个字符。这个语法是[class&& [intersect]]。您可以在相交的字符类中使用完整的字符类语法。
如果相交的类不需要否定插入符号,则Java和Ruby允许您省略嵌套的方括号:[class&& intersect]。
无论如何,大多数引擎都没有这个逻辑,所以当你必须否定一个字符类时,你必须使用语法[^...]
,但你不能改变^
来排除某些字符并允许其他人,你需要扩展你的正则表达式而不是使用快捷方式。