2016-08-13 81 views
0

因此,例如我試圖不匹配'測試'。我試過[^ t] [^ e] [^ s] [^ t]。它不匹配它,但如果至少有一個字符與相同位置的音符相匹配,則它也不匹配。posix正則表達式不匹配一個詞

任何想法如何解決這個問題?

只是一個說明,這是POSIX版本的正則表達式,沒有預見或看起來behidnds。另外,爲了澄清,我想要的字是在某些字符之間,即字符串「sdkfjdlskj」,我正在尋找'<>'之間的所有內容。電子郵件部分很簡單,但不匹配某個單詞是非常令人難以置信的。

+0

POSIX不支持向前看符號或lookbehinds –

+0

如前所述,這是POSIX版本,沒有看aheads /屁股 –

+0

它是[** POSIX基本正則表達式**](http://www.regular-expressions.info/posix.html)或者** POSIX Extended Regular Expressions **? – Armali

回答

2

過去的典型方法是在單詞的每個位置進行測試。

Compressed

([^t]+|(t([^e]|$)|te([^s]|$)|tes([^t]|$)))+

Formatted

(       # (1 start) 
     [^t]+ 
    | 
     (       # (2 start) 
      t 
      ([^e] | $)    # (3) 
     | te 
      ([^s] | $)    # (4) 
     | tes 
      ([^t] | $)    # (5) 
    )       # (2 end) 
)+       # (1 end) 
+0

看來,在你的編輯模式開始附近,你無意中添加了有害的'(['。 – Armali

+0

@Armali - 確實是_Compressed_中的一個錯字,謝謝! – sln