2017-12-03 6 views
0

re.sub_unless関数はありますか?私は見つけられないようです。Python Regex Replace Without Un

私はPythonでregexを使って句読点を(HTML文書で)書式化しようとしています。段落の終わりに句読点の前に不要なスペースを取り除く際、私は顔文字の問題にぶち当たっています。だから、例えば

"text - </p>" 

"text .) </p>" 

"text-</p>" 

"text.)</p>", 

しかし

にレンダリングする必要があります
"text :)</p>" 

が一致する正規表現を書く

"text:)</p>". 

にレンダリングするべきではありません

" [emoticon]</p>" 

困難ではないであろう、いくつかのre.sub_unlessがあったので、もし(パターン、unless_pattern、テキスト)それは私のニーズに完璧です。

+0

あなたは否定的な先読みを使うことができます。 – BrenBarn

+0

パーツの1つをキャプチャする代替ベースの正規表現を構築する必要があります。次に、コールバックメソッド/ラムダ式を使用して置換ロジックを実装します。 –

答えて

0

それはre.sub_unlessはありませんが、あなたが次のことを行うことができ、

import re 
    # text = "text :)</p>" 
    text = "text .) </p>" 
    result = text 
    if ":)" not in text: 
     result = re.sub('\s*', "", text) 

複数の絵文字を持っている場合は、次の操作を行うことができ、

import re 
# text = "text :)</p>" 
text = "text .) </p>" 
result = "" 

emojis = [":)", ":("] 

for emoji in emojis: 
    if emoji in text: 
    result = text 
    break 
    result = re.sub('\s*', "", text) 


print(result) 

は、最もコードを実行するが、その仕事をする。