0

文字列内の数値の範囲を見つけようとしています。さまざまな範囲を以下に示します。特定の範囲の数値を検索するにはどうすればよいですか?

最初の数値が [1, 17] の間、2 番目の数値が [1, 37] の間などになるようにします。

import re   
Test1 = "This is a test 5-9-81-15"

A1 = range(1, 17)
A2 = range(1, 37)
A3 = range(76, 89)
A4 = range(13, 27)

x = re.search("{0}-{1}-{2}-{3}".format(A1, A2, A3, A4), Test1) 

if x: 
    print ("Match")
else:
    print ("No Match")
4

2 に答える 2

0

正規表現は文字のマッチングがすべてです。数字、日付、その他は理解できません。

範囲内の数値などに一致する正規表現を作成できる場合もありますが、非常に長くて面倒な場合があります。

最善の解決策は、探しているものに似ている可能性のある一致を見つけてから、別の方法を使用して、それぞれが実際に探しているものであるかどうかを確認することです。

于 2012-07-16T23:49:13.597 に答える
0

数字だけの文字列を取得できる場合は、要件に適合するかどうかを確認する方法を次に示します。

>>> s = "5-9-81-15"          # String to parse
>>> lb = [1, 1, 76, 13]      # List of lower bounds
>>> ub = [17, 37, 89, 27]    # List of upper bounds

>>> vals = [int(x) for x in s.split('-')]   # vals contains [5, 9, 81, 15]

>>> all(x > L and x < U for x, L, U in zip(vals, lb, ub))    # does the check
True

失敗する例:

>>> s = "5-9-90-15"    # fails with the third number
>>> vals = [int(x) for x in s.split('-')]
>>> all(x > L and x < U for x, L, U in zip(vals, lb, ub))
False

正規表現は、他のテキスト/文字を含む大きな文字列から数字シーケンスを抽出する必要がある場合に適したツールです。

于 2012-07-16T23:43:30.877 に答える