正则表达式与其他东西不同

时间:2014-05-30 18:08:10

标签: regex regex-negation

我想做一些看起来很容易的事情。我只是想对这个表达的对立面做一个正则表达式:

。)"数"()(。*)1.1.2

所以我只想获取文本,例如:" number":2.2.2但不是" number":1.1.2

我尝试了[^],但它只适用于一些数字或字母。 我正在http://regexpal.com/

尝试我的正则表达式

编辑:如果我没有正确解释,我很抱歉:我想做[^ 1234]之类的事情,但适用于所有正则表达式:所以像[^((。)&#34 ;数"(。*)(。)1.1.2)]

EDITED2:如果文字是"数字":1.3.4我将选择文字,但如果文字是"数字":1.1.2我不会选择任何东西。 谢谢!

1 个答案:

答案 0 :(得分:4)

我非常肯定在您的编辑后,这可以实现您想要的目标:

"number":(?!1\.1\.2)\d\.\d\.\d(.*)

这通过字面匹配"number":,然后使用否定前瞻((?!...))来实现。这是一个零宽度断言(意味着它实际上并不匹配任何东西,它只是确保某些东西是真的)。在这个负向预测中,我们确保下一个字符不是1\.1\.2(注意我逃避了句点,因为.表示“任何字符”)。只要1.1.2不遵循"number":,我们就会继续匹配任意一组数字\d\.\d\.\d,然后使用(.*)捕获所有其他数字。

Demo