2017-12-27 19 views
0

特殊記号/#$%^&*@を削除する文字列を、リスト内にない文字または記号で区切っている場合にのみクリーニングする必要があります。 例:記号を削除して文字列を消去する

import re 
def _correct_message(message): 
    new_final_string = re.sub("(?<=[a-zA-Z\.\!])[/#\$\%\^\&\*\@]+(?=[a-zA-Z\.\!])", '', message) 
    return new_final_string 

しかし、私は手動でリスト .!.?にない記号を追加する必要があるという事実を好きではない:

H8e%&l6&%[email protected] [email protected]/9^65$n228d w%e60$$#&[email protected]/c6o5m3e --> Hello and welcome 
I1^/0^^@9t #$%% i/@4#s 11P17/9$M 5^&* a^$45$5$0n&##^4d 6^&&* I $%^$%^ [email protected]@94%3*m t3120i36&^1r2&^##0e&^d ---> It #$%% is 11PM 5^&* and 6^&&* I $%^$%^ am tired 
,. a3%2%1/3$s*0. d8^! -->,. as. d! 
##%12Symbols on the left must remain untouched --> ##%12Symbols on the left must remain untouched 

私はそれがre.subを使用して行うことが可能だということを考え出しました。 regexなしでそれを作ることは可能ですか?

+2

ですべての一致を置き換えますが、文字列を反復処理し、各文字をチェックして、以下のいずれかが過ぎた後、特殊なものであれば可能性そうでない場合は削除してください。 – Nicolas

+1

正規表現を手伝ってください:次のウェブサイトをご覧ください:https://regex101.com正規表現を翻訳します –

答えて

0

それは私が得ることができる最も近い:

(\W+|\d{1,}(?!\d\[A-Za-z]))(?![A-Za-z]{2,}) 

ちょうどスペース

関連する問題