如果之前出现某个单词,请丢弃正则表达式匹配

时间:2012-05-26 19:38:55

标签: regex regex-negation

我对正则表达式完全缺乏经验,所以如果这是一个简单的问题我很抱歉,但我无法在任何地方找到任何答案。我正在尝试匹配[some numbers] [some letters]形式的字符串,例如123 apples,但我不想在它们前面加上单词about时匹配它们(例如about 10 apples不应该匹配)。

我尝试过使用(?<!about )(\d[,\.\d]*) ([a-zA-Z]+),但这显然不起作用,因为它只是略微移动匹配(这样about 12 apples匹配为2 apples)。我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

我以前遇到过这个问题。试试这个:

(?<!about )(\b\d[,\.\d]*\b) ([a-zA-Z]+)

\b匹配零字符字边界(空格后跟字母数字或反之亦然)。它将拒绝将“约123个苹果”称为“23个苹果”,因为在“2”之前没有字边界。

答案 1 :(得分:0)

你是如此亲密:(?<!about \d*)(\d[,\.\d]*)。将\d*添加到您的负面看法背后。