2013-03-04 65 views
0

我需要過濾掉文本字符串,如果有開始與199 一句話其實我使用如何匹配單詞'開始......',但如果引用則不匹配?

/199/ 

但這場比賽也nnn199nnn

我試圖

/\b199/ 

所以只匹配一個或多個以199開頭的單詞的字符串

我需要workaro的一些非常罕見的情況這個過濾器,所以我認爲只是'引用'或'雙引號'199xxx來「破解」正則表達式。

但「199xxx」將被匹配......也「199」 ...

所以我的問題是

如何匹配一個單詞以199開始但如果這個詞本身是雙引號?

編輯: 我必須匹配:

  • 但不是34431994433
  • 但不ciao199dsadsa
  • ,而不是 「1994553」(因爲雙引號)
+0

Realtebo ..你要不要加'abc199'嗎?和199之前的空間? – 2013-03-04 09:41:30

+0

我爲你編寫了一個Python代碼。可能你會發現[它有助於**鍵盤**](http://codepad.org/VjFgBcHH) – 2013-03-04 10:04:54

+0

@GrijeshChauhan:你爲什麼鏈接到鍵盤而不是在這裏發佈你的答案?它仍然有同樣的問題 - 正則表達式仍然匹配'nnn199'或'「199」'或''199',但是你錯用了它('.matches()'將搜索定位到這裏不需要的字符串)。例如,只要一個非字/非空格字符出現在'199'之前就會失敗,就像'Test!匹配199' ... – 2013-03-04 10:14:58

回答

3

您可以使用lookbehind assertion

/(?<!['"])\b199/ 

(?<!['"])檢查該當前位置之前的字符(這是正確的數199開始前)既不是'也不是"

+0

對不起!我正在使用PHP – realtebo 2013-03-05 07:31:44

+0

@realtebo:好的,好消息 - 那麼這個正則表達式就可以工作。提示:不要在標題中放置語言,這就是標籤的用途。你知道,DRY原則和所有這一切。 – 2013-03-05 07:37:37

相關問題