我正在尝试解决一个正则表达式拼图,并且部分正则表达式由以下部分组成:
([^Xa-ehY]|[^f-zW])
或
([^2]|[^D-Za]|[D-Ze-f])
这些让我很困惑。
拿第一个,例如:[^Xa-ehY]|[^f-zW])
。这不是指“不是Xa-ehY还是不是f-zW”?这不等于“任何角色”吗?以e
为例。它与第一个不匹配,但它与第二个匹配。 W
与第二个匹配,但它与第一个匹配。
与([^2]|[^D-Za]|[D-Ze-f])
相同。这意味着“不是2或不是D-Ze-f或D-Ze-f”,对吧?这再次构成“任何角色”。
我错过了什么吗?这只是单个.
正则表达式的错综复杂的替换吗?
答案 0 :(得分:4)
我认为有些字符重叠。例如。在小写字母h中的第一个h不会匹配任何一方。
不可否认,第二个看起来只是“。”
答案 1 :(得分:1)
因为它是一个谜题,你应该仔细观察。
[^Xa-ehY]|[^f-zW]
与.
不同,因为它们在h
(f-z
包含h
)相交,因此它与{{1}相同}}
答案 2 :(得分:1)
你可以在正则表达式测试器中抛出一堆文本,看看是否有任何字符重叠。它很粗糙,但你的第一个例子(\[^Xa-ehY\]|\[^f-zW\])
与字母'h'重叠。第二个例子看起来应该匹配任何东西。