Pythonで数値を受け入れるための正規表現を作成するにはどうすればよいですか?数値は、整数、浮動小数点数、または3e +3または3e-3の形式のいずれかです。
文字列の先頭のみを照合したいのですが、上記の形式のいずれかの数値が存在する場合は、その数値と文字列の残りの部分を返します。
編集:
例えば、
入力>> 290.07abcd出力>> [290.07、abcd]
入力>> abc123出力>>なし
また、最初の発生のみがチェックされます。
例えば、
入力>>- 390-400abc
出力>> [-390、-400abc]
Pythonを使用してこれを行うにはどうすればよいですか?次のことを試しましたが、期待どおりの出力が得られません。
import re
r = input()
x = re.search('^[+-]?\d*(\.\d+)?([+-][eE]\d+)?', r)
if x:
print("x present: ", x.group())
else:
print(None)
例えば、
入力>> 100abc
出力>> x存在:100
入力>> abc100
出力>> x存在:
期待される出力>>なし
これが1つの可能性です。数字のパターンは
number_pattern = "[+-]?((\d+\.\d*)|(\.\d+)|(\d+))([eE][+-]?\d+)?"
パターンは次のもので構成されます。
e
またはE
;数値の主要部分の最初と3番目の選択肢は、1つ以上の数字で構成するように組み合わせることができ、オプションで、小数点とそれに続く0つ以上の数字が続きます。番号のパターンは次のようになります
number_pattern = "[+-]?((\d+(\.\d*)?)|(\.\d+))([eE][+-]?\d+)?"
これを使用して、要求したことを実行する関数を作成できます。
pattern = "(" + number_pattern + ")(.*)"
compiled = re.compile(pattern)
def number_split(s):
match = compiled.match(s)
if match is None:
return None
groups = match.groups()
return groups[0], groups[-1]
いくつかの例:
In [4]: print(number_split("290.07abcd"))
('290.07', 'abcd')
In [5]: print(number_split("abc123"))
None
In [6]: print(number_split("-390-400abc"))
('-390', '-400abc')
In [7]: print(number_split("0.e-3"))
('0.e-3', '')
In [8]: print(number_split("0x"))
('0', 'x')
In [9]: print(number_split(".123e2"))
('.123e2', '')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加