1
私は1つの単語に基づいて内部の文章を削除したいと思います。だから、ちょうど 'スタート'の代わりに、私はregexステートメントが 'start.stop'を返すようにします。正規表現の一致内部 '。'
>>> import re
>>> s = 'start.stop.do nice.'
>>> re.sub(r'\..*nice.*', '', s)
'start'
私は1つの単語に基づいて内部の文章を削除したいと思います。だから、ちょうど 'スタート'の代わりに、私はregexステートメントが 'start.stop'を返すようにします。正規表現の一致内部 '。'
>>> import re
>>> s = 'start.stop.do nice.'
>>> re.sub(r'\..*nice.*', '', s)
'start'
あなたは他の文章でドットを合わせるのを拒否する代わりに.*
のnegated character classを必要としています。そして、最後のドットを保存するために、最後のドットにpositive-lookaheadを使用して、正規表現エンジンがそれを捕捉しないようにすることができます。
>>> re.sub(r'\.[^.]*nice[^.]*(?=\.)', '', s)
'start.stop'
@bfontaineによってもう一つの良い例:
>>> s = "foo.bar.nice.qux"
>>> re.sub(r'\.[^.]*nice[^.]*(?=\.)', '', s)
'foo.bar.qux'
注 'S'は' "foo.bar.nice.qux" であれば、 '、これは' ' "foo.barqux" を返すこと。 – bfontaine
@bfontaine確かに、良いメモ!ただ固定しました;-) – Kasramvd
@ Kasramvd: '(?= \。)'はまったく必要ありません。あなたは? https://regex101.com/r/zN7xW9/1を参照してください。 –