排除RegEx中的模式

问题描述:

我希望RegEx匹配任何十六进制数字,但是7E7D排除RegEx中的模式

要匹配任何十六进制数,我使用[0-9A-F]{2}。我现在如何排除未经破解的数字?

+1

大多数引擎或程序都有某种“不”功能,它比正则表达式匹配一切'但是'更有效。 我建议你先看看,然后用复杂的东西来描述。在答案中。 – AoeAoe 2012-03-15 17:03:03

您可以使用在7E7D上失败的负面预测。以下模式使用^$来匹配整个字符串,而不是字符串中的部分匹配。

^(?!7[ED])[0-9A-F]{2}$ 
+0

感谢这工作。我不需要'^'和'$',因为我使用RegEx作为用TinyPG生成的解析器中的终端。 – woodtluk 2012-03-15 17:32:28

+0

@ user1272072如果这回答你的问题,然后[接受](http://meta.stackexchange.com/q/5234/146395)的答案。 – Alex 2012-03-15 18:36:25

你可以使用这样的事情:

[0-68-F][0-F] || 7[0-CF]

(该||可能无法正常工作,这取决于你使用这个表达式,你没有指定你的问题)

+0

这没有奏效。我正在使用C#和TinyPG。不管怎么说,还是要谢谢你。 – woodtluk 2012-03-15 17:28:01

[0-9A-F&&[^7]][0-9A-F&&[^DE]]

+0

我没有工作。我认为这将忽略任何具有第一个数字7和第二个数字D od E.的十六进制数字。 – woodtluk 2012-03-15 17:29:55