2017-11-30 12 views
0

が続いていない文字列を検索します)、私はアポストロフィを落としたいと思います。しかし、私はその言葉を変えないようにしたい。のpython 3は、私はこのようになります文字列を持っているサブ

だから、私は、これは正規表現式を使用して行うことができますどのように

line = "aaa farmer blooper mouse'd would've bbb" 

、私の文字列になりたいですか?アポストロフィ、またはアポストロフィ+ S(さん)で従うものを主張する正規表現lookaheadを使用して

+0

もっと良い例は、 "aaa abcd 'xy'sifs農民の摘発者のマウスはbbb'"となります。これは、単一のアポストロフィ(削除する必要がある)と埋め込まれた '' s(削除してはならない)の例を追加します。 – mhawke

答えて

3

空白文字のみまたは文字列の末尾、または他の言葉で、単語や文字列の最後の最後にすることができ

import re 
line = "aaa farmer's blooper's mouse'd would've bbb" 
line_new = re.sub(r"'s?(?=(\s|$))", '', line) 
# "aaa farmer blooper mouse'd would've bbb" 

正規表現の説明

  • 's?空白文字のみまたは文字列

の終わり正規表現の別の代替は次のようになり可能で何をたどる ASSERT |($)?=(\はS)##の一致アポストロフィは、ゼロまたは1つの

  • によって従っ否定的な先読みを使って続くものが空白以外の文字でないことをアサートする re.sub(r"'s?(?!\S)", '', line)

  • +0

    最後の単語が '' 'または' 's'で終わるとどうなりますか? – mhawke

    +0

    はい、 '| $' 'はそれを修正します。 – mhawke

    +0

    それを指摘してくれてありがとう、文字列の終わりを処理する答えを修正する – Skycc

    関連する問題