2017-12-19 10 views
1

現在、次の正規表現パターンを使用して、その文の記号を削除しています。特定の記号以外の正規表現を特定する

sentence = re.sub("[^a-zA-Z]"," ", sentence) 

はしかし、私はすべての-を維持し、文章内の他のすべてのシンボルを削除します。

たとえば、以下の文章では、次のように出力したいと思います。

Input: tim-tam is a tasty, yummy chocolate. 
Output: tim-tam is a tasty yummy chocolate 

これを行うために現在の正規表現パターンを改善するにはどうすればよいですか?

答えて

4

regular expression syntaxを参照してください。

[^a-zA-Z]は、a-zまたはA-Zの範囲にない任意の文字と一致することを意味します。

範囲内にない文字は、セットを補完することによって照合できます。セットの最初の文字が '^'の場合、セットに含まれていない文字はすべて一致します。たとえば、[^ 5]は '5'以外の文字と一致し、[^^]は '^'以外の文字と一致します。 ^は、セットの最初の文字でない場合、特別な意味はありません。

あなたも-を除外したい場合は、それを含める:[^a-zA-Z-]

+0

ありがとうございます。できます。私はこれを答えとして受け入れます。私は '' ''の前に出てくることを無視したいと思いますが、それを[^ a-zA-Z-s]と書くのは正しいですか?たとえば、入力:「犬の食べ物」は仕上げです。出力:「犬の食べ物は仕上げです」 –

+1

いいえ、それはもっと複雑なパターンになります。 '[]'は一連の文字を示します。あなたは否定的な先読みでそれを達成することができます(私の答えにリンクされているドキュメンテーションでそれを探します)。例: '[^ a-zA-Z - '] |'(?!s)'。 ''(?!s)の部分は、' ''の後ろに 's'がマッチします。 '| 'は、またはを意味します。 – Galen

0

[^-ZA-Z-]-Z、A-Z又はダッシュしかし

何か。

0

これは

sentence = re.sub("[^a-zA-Z]"," ", sentence) 

あなたの現在の正規表現であり、あなたが-を除外したい場合は、

sentence = re.sub("[^a-zA-Z-]"," ", sentence) 

を使用[]の冒頭にあるキャレットは、「このcではありませんハーパークラス "と呼ばれる。したがって、セットに-を追加すると、一致から除外されます。

+0

ありがとうございました。できます。私は '' ''の前に出てくることを無視したいと思いますが、それを[^ a-zA-Z-s]と書くのは正しいですか?例えば、入力:「犬の「食べ物」は仕上げ」出力:「犬の食べ物は仕上げ」 –

関連する問題