2

私は正規表現について学んでおり、各文字の置換ではなく、文字列内の文字のコレクションの文字列置換を行う方法を理解しようとしています(これまでのところ、これがすべてです.

元の文字列と呼ばれる文字列があるとしましょう:

original_string = "(cats && dogs) || (cows && chickens)"

文字列内の各単語を文字列「test」に置き換えたいと思います。私の望ましい結果は次のようになります。

new_string = "(test && test) || (test && test)"

これまでのところ、私のコードは次のようになります。

replacement = "test" 
original_string = "(cats && dogs) || (cows && chickens)"
new_string = re.sub(r'[^(,^),^&,^|]', replacement, original_string)

ただし、これにより、猫、犬、牛、鶏の各文字が「テスト」に置き換えられます。結果は次のようになります。

 (testtesttesttesttest&&testtesttesttesttest)test||test(testtesttesttesttest&&testtesttesttesttesttesttesttesttest)

正規表現を使用して目的の結果を得るにはどうすればよいですか?

4

1 に答える 1

2

次のようなより単純な正規表現を使用できます。

replacement = "test" 
original_string = "(cats && dogs) || (cows && chickens)"
new_string = re.sub(r'[a-z]+', replacement, original_string)

[a-z]+複数回出現するアルファベットを意味します。

ただし、元の正規表現を可能な限り維持して、これを使用します。

replacement = "test" 
original_string = "(cats && dogs) || (cows && chickens)"
new_string = re.sub(r'[^()|& ]+', replacement, original_string)

を繰り返す必要はありません^

于 2013-06-13T16:27:40.623 に答える