正規表現は初めてですが、文字列を数字の先頭まで一致させたいと思っています。
だから私が持っていると言ってください:
EEEE1234
次に、次のみを抽出したいと思います。
EEEE
検索してみましたが、正規表現はややこしいので、例を使用するのが一番だと思います。何かご意見は?また、これに関する正規表現コードジェネレーターまたは優れたチュートリアルについての洞察はありますか?
\D を使用して、「数字ではない」ことを意味します。
r"^\D+"
例:
import re
s = "EEEE1234"
print re.match(r"^\D+",s).group(0)
オンラインでの動作を確認してください: ideone
チュートリアルの推奨事項はすでにいくつかありますが、モジュールのドキュメントをre
まだ見ていない場合は、それをブックマークして、より基本的なチュートリアルを読んだ後に読む必要があることも付け加えておきます。ドキュメントは初心者向けではありませんが、Python での正規表現の使用に固有の非常に役立つヒントがいくつかあり、最後にいくつかの例もあります。
\d
= 1 桁 (0 ~ 9 の数字)\D
= 数字以外の 1 つ\D+
= 1 つ以上の非数字\D+\d
= 1 つ以上の非数字の後に 1 つの数字が続く(\D+)\d
= グループに取り込まれた 1 つまたは複数の非数字とそれに続く 1 つの数字したがって、文字列がある場合
str = 'EEEE1234'
次に、文字列の正規表現を照合するためにimport re
使用できます。re.match
re.match(r'(\D+)\d', str)
これにより、一致オブジェクトが取得され、そこからグループのコンテンツを抽出できます。
re.match(r'(\D+)\d', str).group(1)
これには が含まれますEEEE
。
おそらく、正規表現を、まず第一にマッチング操作を実行するツールと見なすことが役立つかもしれません。検索、置換、および文字列の分割はすべて、この機能の結果です。目的の部分を抽出する方法に応じて、1 つの例を示します。
r"^(\D+)\d*"
この正規表現は、後で参照できるキャプチャ グループを使用します。
前述のように、学習目的のために多くのリソースがあります。正規表現の仕組みに興味がある場合、または正規表現をもう少しよく理解したい場合は、通常の言語について少し読むとよいでしょう。
文字と数字がいつ一致するかを具体的に探している場合は、次のようにします。
re.search(r'[a-zA-Z]+(?=\d+)')
数字が続く場合にのみ一致しますが、数字自体は返しません。そうすれば、乱雑になる可能性のあるグループを回避することもできます.