2016-08-13 10 views
0

たとえば、私は 'test'と一致しないようにしています。私は[^ t] [^ e] [^ s] [^ t]を試しました。それは一致しませんが、少なくとも1つの文字が同じ位置の音符と一致する場合、一致しません。posix正規表現が単語に一致しません

これを回避する方法はありますか。

ちょっとメモしておくと、これは正規表現のPOSIX版であり、ルックアヘッドやルックアライドがありません。

また、明確にするために、私が望む言葉は特定の文字の間にあります。つまり、文字列 "sdkfjdlskj"です。私は '<'の間のすべてを探しています。電子メールの部分は簡単ですが、特定の単語に一致しない場合はかなり不安です。

+0

述べたようにPOSIXを先読みまたはlookbehinds –

+0

をサポートしていません、これはPOSIXのバージョンである、ノールック先読み/尻 –

+0

がそれです[** POSIX基本正規表現**](http://www.regular-expressions.info/posix.html)または** POSIX拡張正規表現**? – 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

関連する問題