0

表現は:「価格(コンマを含むかもしれません)EG」

例:

40 EG

また

4,657 EG

また

4,352,345 EG

これらすべてのケースに使用する必要がある 1 つの文字列正規表現が必要です。

4

6 に答える 6

3

これを試すことができます:

^\d{1,3}(,\d{3})*\sEG$

小数も必要な場合は...

^\d{1,3}(,\d{3})*(\.\d\d?)?\sEG$

ここで、コンマをまったく使用せず、10 進数を使用できる数字 (999 以上) を使用できる場合...

^\d{1,3}(,?\d{3})*(\.\d\d?)?\sEG$

詳細:

^at the start は、価格が次の文字で始まる必要があることを意味します (ここ\dでは数字を意味します)

\d{1,3}1 ~ 3 文字の数字を意味します。

(,\d{3})*カンマと数字 3 文字からなる 0 回以上出現するグループです。得られる価格が「クリーン」であると仮定すると、次のような,34価格のようなもの3,34 EGは通過できません。

(\.\d\d?)?は別のグループで、0 回または 1 回出現し、ピリオド.、数字、および 2 番目の可能な数字で構成されます。.2またはのようなもの.54は許可されています。.564ただし、そうではありません。

\sは 1 つの空白文字を意味し、それ以上でもそれ以下でもありません。提供された価格データが「クリーン」である場合、問題はなく、実際に「クリーン」でないものを特定するのに役立ちます。

EG単純に通貨に一致しますEG

$は、先行する文字 (Gこの場合) が最後の文字でなければならないことを意味します。

于 2013-05-14T11:18:56.267 に答える
2

次の正規表現を使用できます。

"([0-9]{1,3}(,[0-9]{3})*)\s+EG"

番号にコンマを含めることができない場合、たとえば123456. この代替手段を使用できます:

"([0-9]+|[0-9]{1,3}(,[0-9]{3})*)\s+EG"
于 2013-05-14T11:18:45.300 に答える
1

どうぞ:/(?:\d,?)+\sEG/

これは、これらの価格文字列のいずれにも一致します。

編集:これは私が今考えることができる最も包括的なものです。

[^\.,\d](?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d{2})?\s*EG

これは一致します:

123,123,123EG
234,123.23 EG
234123 EG
234123.52 EG

そして一致しません:

,,,,, EG
1,2,3,4,5,6 EG
1234,123 EG
234,1234 EG
于 2013-05-14T11:14:00.873 に答える
1

([0-9]{1,3}(?:\,[0-9]{3})*|(?:[0-9]+))(?:\.([0-9]{2}))?(?=\s{1,}EG)

ここに画像の説明を入力

ここに画像の説明を入力

于 2013-05-14T14:44:18.767 に答える
1

以下の作品

import re
t = ["40 EG",
"4,657 EG",
"4,352,345 EG",
",,,,,, EG",
"1,2,3,4 EG",
 "12345 EG"]

regex = "[\d{1,3},]+\d{3}\sEG|^\d+\sEG"

for string in t:
    print re.findall(regex, string)

出力:

['40 EG']
['4,657 EG']
['4,352,345 EG']
[]
[]
['12345 EG']

編集:要件を正確に満たすように更新しました。上記を参照してください

于 2013-05-14T11:21:49.657 に答える
0
import re, pprint

strings = ['40 EG', '4,657 EG', '1234 EG', '6,78 EG', '4,352,345 EG', '1,234']
csn = re.compile('\d{1,3}(,\d{3})* EG')
pprint.pprint( [(s, bool(csn.match(s))) for s in strings] )

[('40 EG', True),
 ('4,657 EG', True),
 ('1234 EG', False),
 ('6,78 EG', False),
 ('4,352,345 EG', True),
 ('1,234', False)]
于 2013-05-14T11:26:43.197 に答える