文字列path
と一致させたいが、文字列os.path
は一致させたくない。それについてどうすればいいですか? (?!(os\.path))\bpath\b
を試してみましたが、私はまだあなたがパスは一致しますが、os.pathはありません
(?<!os\.)\bpath\b
これは、基本的には、正確な単語path
と一致し、必要であればそれはos.
が付いていないことを保証しますように、ルックの背後に基づいた正規表現を使用することができ、すべてのos.path
S
文字列path
と一致させたいが、文字列os.path
は一致させたくない。それについてどうすればいいですか? (?!(os\.path))\bpath\b
を試してみましたが、私はまだあなたがパスは一致しますが、os.pathはありません
(?<!os\.)\bpath\b
これは、基本的には、正確な単語path
と一致し、必要であればそれはos.
が付いていないことを保証しますように、ルックの背後に基づいた正規表現を使用することができ、すべてのos.path
S
を取得sys.path
またはxx.path
のような同様の構文を避けるには、代わりに(?<!\w\.)
を使用します。
regex101 demoを参照してください。
ありがとう!なぜ私は悲惨に失敗したのですか? –
あなたのルーキーハインドは、あなたの試合が始まったときと同じ位置から開始していました。したがって、 'path'の直前にあります。あなたは '(?!(os \ .path)).. \。\ bpath \ b'でこれをチェックするかもしれません... –
あなたは.
で始まる任意のpath
をスキップしたい場合はこれがsys.path
またはos.path
をスキップしますが、path
と一致します
(?<!\.)path
を試してみてください。
テスト文字列がif path and not os.path.sep in path
であれば、
試合は次のようになります(?!。
path
ないregex101
'で
path
参照のデモにos.path.sep場合\ bpath \ b'? –
@SebastianProske:動作しているようです - なぜ動作するのかを説明し、どのようにして 'pathとos.path.sep in path 'のような複雑なケースをmathcで確実にできるかを説明する答えを追加できますか? –
与えられた文字列から、 osに接続されていないパスのすべての出現箇所に一致させたいですか?または全く? –