たとえば、次のような正規表現がいくつかあります。98374D90 483D39 3843930D393
今、私はすべての文字を取り出して整数を次のように保持するPythonコードを持っています:
ws = 98374D90
clean = re.sub("\D", "", ws)
これで9837490が残りますが、文字「D」に到達すると、Dとその後のすべてが削除されるため、98374D90の結果は98374になります。これを行うにはどうすればよいですか?
助けてくれてありがとう。
たとえば、次のような正規表現がいくつかあります。98374D90 483D39 3843930D393
今、私はすべての文字を取り出して整数を次のように保持するPythonコードを持っています:
ws = 98374D90
clean = re.sub("\D", "", ws)
これで9837490が残りますが、文字「D」に到達すると、Dとその後のすべてが削除されるため、98374D90の結果は98374になります。これを行うにはどうすればよいですか?
助けてくれてありがとう。
Another non-regex solution:
>>> s = '98374D90'
>>> s.partition('D')
('98374', 'D', '90')
以下は、数字以外の文字をnull文字列に置き換えます-文字を効果的に削除します。
>>> re.sub("\D.*", "", "98374D90")
'98374'
一重引用符と生の文字列を使用することをお勧めします。
re.sub(r'D.*', '', '98374D90')
それはあなたがそれほど頻繁に逃げる必要からあなたを救います。
正規表現を要求している間、正規表現は複雑なことだけを行う場合があります(つまり、自分で正規表現を維持できない場合)。より簡単な関数を使用できます。おそらく次のようになります。
from itertools import takewhile
import string
s = '98374D90'
print ''.join(takewhile(lambda c: c in string.digits, s))
戻り値
98374