2016-09-15 11 views
0

米国のすべての出現を置き換えるための正規表現を作成しようとしています。ここで私はうまくいくと思いました。米国のすべての出現を置き換える正規表現

string = re.sub(r'\bU.S.\b', 'U S ', string) 

これを実行すると、最初のオカレンスだけが検出されます。これはなぜですか、どうすればこの問題を解決できますか?ありがとう

+0

私はrによってそれが繰り返されると考えました。申し訳ありません – Kahless

+0

'r'は生の文字列を意味します。 –

+0

私は参照してください。ありがとう。私はその文書を再読します。 – Kahless

答えて

2

問題は、.は正規表現(任意の文字と一致)で特別な意味を持つため、エスケープする必要があるということです。

string = re.sub(r'\bU\.S\.', 'U S ', string) 

また、あなたは.\bを使用しないでください。 \bは、単語と非単語文字の間で一致します。 .は単語以外の文字であるため、.の後に単語文字が続く場合にのみ一致します。 U.S.fooとなりますが、.の後にスペースが続くため、U.S. currencyにはなりません。これは単語文字ではありません。

DEMO

+0

説明をいただきありがとうございます。まだregxの周りに私の頭をラップしようとしています。 – Kahless

+0

www.regular-expression.infoは良いチュートリアルを持っています – Barmar

+0

クールありがとう私はそれをチェックします。私はちょうど再テストし、何らかの理由でそれはまだ最初の発生を取得しています。 – Kahless

0

あなたはすべての出現を検索し、それらを交換するために、ファイル内で検索されている場合は、行ごとに検索する必要があります。

です。 \する必要があります。なぜなら。 REには他の意味があります。 実装するのがより安全な方法は、\ b +を書くことです。そのような場合は1つ以上カウントします。

R doesntの繰り返しを意味し、それは文字をエスケープすることによって

を処理することが文句を言わない、あなたは後に\ bを心配する必要はいけません。 REはそれ以前のすべてにマッチし、一致しないものは無視するからです。間違ったREを持っている間に、最初の部分が実際に印刷されていますか?

関連する問題