2

正規表現は初めてですが、文字列を数字の先頭まで一致させたいと思っています。

だから私が持っていると言ってください:

EEEE1234

次に、次のみを抽出したいと思います。

EEEE

検索してみましたが、正規表現はややこしいので、例を使用するのが一番だと思います。何かご意見は?また、これに関する正規表現コードジェネレーターまたは優れたチュートリアルについての洞察はありますか?

4

4 に答える 4

5

\D を使用して、「数字ではない」ことを意味します。

r"^\D+"

例:

import re

s = "EEEE1234"
print re.match(r"^\D+",s).group(0)

オンラインでの動作を確認してください: ideone

チュートリアルの推奨事項はすでにいくつかありますが、モジュールのドキュメントをreまだ見ていない場合は、それをブックマークして、より基本的なチュートリアルを読んだ後に読む必要があることも付け加えておきます。ドキュメントは初心者向けではありませんが、Python での正規表現の使用に固有の非常に役立つヒントがいくつかあり、最後にいくつかの例もあります。

于 2012-05-17T18:00:00.113 に答える
3
  • \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

于 2012-05-17T18:10:03.690 に答える
1

おそらく、正規表現を、まず第一にマッチング操作を実行するツールと見なすことが役立つかもしれません。検索、置換、および文字列の分割はすべて、この機能の結果です。目的の部分を抽出する方法に応じて、1 つの例を示します。

r"^(\D+)\d*"

この正規表現は、後で参照できるキャプチャ グループを使用します。

前述のように、学習目的のために多くのリソースがあります。正規表現の仕組みに興味がある場合、または正規表現をもう少しよく理解したい場合は、通常の言語について少し読むとよいでしょう。

于 2012-05-17T18:00:06.900 に答える
0

文字と数字がいつ一致するかを具体的に探している場合は、次のようにします。

re.search(r'[a-zA-Z]+(?=\d+)')

数字が続く場合にのみ一致しますが、数字自体は返しません。そうすれば、乱雑になる可能性のあるグループを回避することもできます.

于 2012-05-17T18:43:52.367 に答える