IQ Botのカスタムロジックで正規表現を使うケースがぼちぼち出てきました。
そんなわけで、仕事で使った正規表現のカスタムロジックを備忘がわりにメモっておきます。
(体系立ててまとめられれば一番いいのですが、ないよりマシということで。。。)
##英語の大文字と数字だけを取り出したいとき
数字と英語の大文字の組み合わせでできた申込番号を取り出すときに使いました。
英語の大文字と数字だけを取り出したいとき
import re
field_value = re.sub(r"[^0-9A-Z]","",field_value)
ちょこっとコード解説をすると、正規表現の[0-9]
は数字、[A-Z]
は英語の大文字を表します。
「数字と英語の大文字」は[0-9A-Z]
のように表現します。
で、コード例についている^
はその否定。
つまり、[^0-9A-Z]
は「数字でも英語の大文字でもない文字」ですね。
"[^0-9A-Z]"
の前についているr
は、「これは正規表現だよ」の合図です。
したがって、re.sub(r"[^0-9A-Z]","",field_value)
は、
「field_value
の中の数字でも英語の大文字でもない文字を空の文字列(""
)に置き換えてね」
イコール
「field_value
の中の数字でも英語の大文字でもない文字を除外してね」
イコール
「field_value
の中から数字と英語の大文字だけを取り出してね」
という意味になります。