質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

4152閲覧

特殊文字の判定、除去

keraker

総合スコア46

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/15 05:20

編集2021/02/15 06:28
ignores = re.compile("[\.,-/\"'>()&;:]") s="a\a" s2="a:a" print( re.search(ignores,s) )

\のようなエスケープ文字も含めた正規表現に使われる特殊文字を処理したいです。
しかしこのままだとsはnoneが返ります。
よろしくお願いします。

皆様ありがとうございます。
どれも有意義な回答でした。
今回はほかの人にとっても一番わかりやすいだろうというものをベストに選ばせていただきます。
みな参考になりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

https://docs.python.org/ja/3/library/re.html

例えば、リテラルのバックスラッシュにマッチさせるには、パターン文字列として '\' と書かなければなりません。なぜなら、正規表現は \ でなければならないうえ、それぞれのバックスラッシュは標準の Python 文字列リテラルで \ と表現せねばならないからです。


あと文字クラス[]の中の-は範囲指定です。

https://docs.python.org/ja/3/library/re.html#index-9

  • がエスケープされているか (例: [a-z])、先頭や末尾の文字にされていると (例: [-a] や [a-])、リテラル '-' にマッチします。

先頭に持ってくるのがいいと思います。(これは個人の感想です)


ignores = re.compile("[-\\.,/\"'>()&;:]")

でしょう。

投稿2021/02/15 06:11

quickquip

総合スコア11235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

特殊文字を処理したいです。

「特殊文字」とは何かを、きちんと定義するのが先決です。

(状況によっては、逆に「この文字だけ通す」と定義したほうがいいという場面も考えられます)

投稿2021/02/15 05:26

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ご希望の趣旨に合いますか?

ignores = re.compile(r"[\.,-/\"'>()&;:]")

投稿2021/02/15 05:50

phoepsilonix

総合スコア233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keraker

2021/02/15 06:04

ありがとうございます。マッチするようになりました。 最初にrをつけるといいのですね。 これはどのような意味がありますか。
keraker

2021/02/15 06:04

またなぜついていないとマッチしなかったのでしょうか。
guest

0

ベストアンサー

正規表現の中で\の文字を指定したい場合は\と書きます。
さらに、raw文字列でない文字列の中に\を書く場合は\と書きます。つまり\\と書きます。

また、[ ]の途中に-を書くと範囲指定の意味になるので、-という文字自体を指定したいときは[の直後か、]の直前に書きます。
今回の,-/の範囲指定は、,-./の4文字なのでたまたま大丈夫ですが。

Python

1ignores = re.compile("[\\.,/\"'>()&;:-]")

投稿2021/02/15 06:08

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問