1

Pythonで正規表現を書こうとしています。私が文字列を持っているとしましょう

string = "alpha=23; beta=34; gamma=43"

alphaこの文字列を読み取り、の値betaをデータベースに保存したいと思いgammaます。それを行う正規表現を作成するにはどうすればよいですか。

私の推測では、単語の後に=記号が続くかどうかをチェックする正規表現を探す必要があります。私はこれを書いた:

matchObj = re.search( r'\w+(?==)', string, re.I)

これは出力alphaして停止しますか?

  1. これは正しいです?
  2. どうすればすべての値を読み取ることができますか?
4

3 に答える 3

3

1はい、正解です。最初の一致後に検索が停止します。

2findallの代わりに試してくださいsearch

リストを返します。

re.findall( r'(\w+)=([^;]+)', string, re.I)

分割を使用する場合:

[re.split('=',s) for s in re.split(';',string)]
于 2012-07-12T17:59:12.563 に答える
1

次のような単純なもの:

s = "alpha=23; beta=34; gamma=43"
re.findall(r'([a-z]+)=(\d+)', s, re.I) or # (\w+) instead I guess
# [('alpha', '23'), ('beta', '34'), ('gamma', '43')]

または正規表現なし(そしておそらくもっと便利)

dict(i.split('=') for i in s.split(';'))
# {'alpha': '23', ' beta': '34', ' gamma': '43'}
于 2012-07-12T18:01:04.583 に答える
1

文字列用にハードコーディングできます。

alpha=(\d+); beta=(\d+); gamma=(\d+)

次に、を使用して、、、およびの値にそれぞれグループ1〜3を使用できるre.searchを取得します。MatchObjectalphabetagamma

別のオプションはで使用findallしています

(\w+)=(\d+)

ここで、グループ1と2を使用して、識別子(alpha、...)と値を取得できます。

于 2012-07-12T18:01:16.277 に答える