2016-10-15 11 views
0

文字列pathと一致させたいが、文字列os.pathは一致させたくない。それについてどうすればいいですか? (?!(os\.path))\bpath\bを試してみましたが、私はまだあなたがパスは一致しますが、os.pathはありません

(?<!os\.)\bpath\b 

これは、基本的には、正確な単語pathと一致し、必要であればそれはos.が付いていないことを保証しますように、ルックの背後に基づいた正規表現を使用することができ、すべてのos.path S

+0

'でpath

参照のデモにos.path.sep場合\ bpath \ b'? –

+0

@SebastianProske:動作しているようです - なぜ動作するのかを説明し、どのようにして 'pathとos.path.sep in path 'のような複雑なケースをmathcで確実にできるかを説明する答えを追加できますか? –

+0

与えられた文字列から、 osに接続されていないパスのすべての出現箇所に一致させたいですか?または全く? –

答えて

1

を取得sys.pathまたはxx.pathのような同様の構文を避けるには、代わりに(?<!\w\.)を使用します。

regex101 demoを参照してください。

+0

ありがとう!なぜ私は悲惨に失敗したのですか? –

+1

あなたのルーキーハインドは、あなたの試合が始まったときと同じ位置から開始していました。したがって、 'path'の直前にあります。あなたは '(?!(os \ .path)).. \。\ bpath \ b'でこれをチェックするかもしれません... –

0

あなたは.で始まる任意のpathをスキップしたい場合はこれがsys.pathまたはos.pathをスキップしますが、pathと一致します

(?<!\.)path

を試してみてください。

テスト文字列がif path and not os.path.sep in pathであれば、

試合は次のようになります(?!。

pathないregex101

関連する問題