0

現在、単語全体の一致を試みていますが、\b フラグは単語の境界ではないものと一致しています。現在、私の正規表現は次のようになっています。

m = re.compile(r'\bT5\b')

これは "T5" のほとんどの出現でうまく機能しますが、\b は $、#、または ! などの記号と一致します。そのため、「#T5」や「!T5」などの文字列は上記の正規表現に一致します。これらの記号は、システムの \w フラグと一致しません。一致させたいのは、' T5 ' または 'T5 ' または ' T5' の 'T5' です。基本的には、周囲に空白がある文字列、または周囲に空の文字列がある文字列です。ここで何か間違ったことをしていますか?\b と \w の不一致についての言及は見つかりませんでした。上記のような記号と一致しないように正規表現を適応させるにはどうすればよいですか?

4

1 に答える 1

2

とは、単語の文字 (英数字と ) と単語以外の文字の\b境界を意味し_ます。この場合、ゼロ幅の負の後読みと先読みが必要です。「非空白文字」atom を使用し\Sます。

試す:

m = re.compile(r'(?<!\S)T5(?!\S)')

「非空白文字が(?<!\S)先行しない場合」を(?!\S)意味し、「非空白文字が後続しない場合」を意味します。

于 2013-10-18T15:23:56.943 に答える