1

コンマ区切りの ids(digits) のリストがあります。そして、3 で割り切れるこれらだけを取得する必要があります。

Example: i = "3454353, 4354353, 345352, 2343242, 2343242 ..."

4

4 に答える 4

9

本当に数字(数値ではない)を意味する場合、これは次のように簡単です。

 re.findall(r'[369]', my_str)

数値のリストについては、正規表現を使わなくても非常に簡単です。

lst = "55,62,12,72,55"
print [x for x in lst.split(',') if int(x) % 3 == 0]
于 2012-06-12T07:39:17.680 に答える
2

この質問からのアイデアを使用して、私は得ます:

i = "1, 2, 3, 4, 5, 6, 60, 61, 3454353, 4354353, 345352, 2343241, 2343243"

for value in i.split(','):
    result = re.search('^(1(01*0)*1|0)+$', bin(int(value))[2:])
    if result:
        print '{} is divisible by 3'.format(value)

ただし、このタスクには正規表現を使用したくありません。

于 2012-06-12T08:02:33.710 に答える
2

DEA[1] の削減による完全なバージョン:

^([0369]|[147][0369]*[258]|(([258]|[147][0369]*[147])([0369]|[258][0369]*[147])*([147]|[258][0369]*[258])))+$

[1:] Converting Deterministic Finite Automata to Regular Expressions', C. Neumann 2005
注: 図 4 にはタイプミスがありq_iます。ce*bce*d

于 2014-06-12T23:35:27.423 に答える