0

たとえば、次のような正規表現がいくつかあります。98374D90 483D39 3843930D393

今、私はすべての文字を取り出して整数を次のように保持するPythonコードを持っています:

ws = 98374D90
clean = re.sub("\D", "", ws)

これで9837490が残りますが、文字「D」に到達すると、Dとその後のすべてが削除されるため、98374D90の結果は98374になります。これを行うにはどうすればよいですか?

助けてくれてありがとう。

4

4 に答える 4

2

Another non-regex solution:

>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')
于 2012-05-02T06:27:10.583 に答える
2

以下は、数字以外の文字をnull文字列に置き換えます-文字を効果的に削除します。

>>> re.sub("\D.*", "", "98374D90")
'98374'
于 2012-05-02T04:29:06.630 に答える
2

一重引用符と生の文字列を使用することをお勧めします。

re.sub(r'D.*', '', '98374D90')

それはあなたがそれほど頻繁に逃げる必要からあなたを救います。

于 2012-05-02T04:31:39.723 に答える
0

正規表現を要求している間、正規表現は複雑なことだけを行う場合があります(つまり、自分で正規表現を維持できない場合)。より簡単な関数を使用できます。おそらく次のようになります。

from itertools import takewhile
import string

s = '98374D90'

print ''.join(takewhile(lambda c: c in string.digits, s))

戻り値

98374
于 2012-05-02T05:02:36.873 に答える