2012-03-15 81 views
1

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

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

+1

大多數引擎或程序都有某種「不」功能,它比正則表達式匹配一切'但是'更有效。 我建議你先看看,然後用複雜的東西來描述。在答案中。 – AoeAoe 2012-03-15 17:03:03

回答

1

您可以使用在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

你可以使用這樣的事情:

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

(該||可能無法正常工作,這取決於你使用這個表達式,你沒有指定你的問題)

+0

這沒有奏效。我正在使用C#和TinyPG。不管怎麼說,還是要謝謝你。 – woodtluk 2012-03-15 17:28:01

0

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

+0

我沒有工作。我認爲這將忽略任何具有第一個數字7和第二個數字D od E.的十六進制數字。 – woodtluk 2012-03-15 17:29:55