0

3つの一連の文字を分割する2つのアンダースコアを持つ文字列に一致する正規表現は何でしょうか。可能であれば、これはSQLのようなステートメントにすることもできます。

マッチ:

b_06/18/2012_06:02:34 PM 
y1289423_06/14/2011_03:06:35 AM 
23479693_11/01/2011_06:12:55 PM 

合わない:

CCC Valuation_b_06/28/2012_05:57:20 PM 
CCC Valuation_CCC Valuation_b_06/28/2012_05:57:20 PM 
doc1_2.pdf 
testdoc.txt
4

2 に答える 2

3

すべてのデータが例と一致している場合、これは機能するはずです。

編集:行全体に一致するように更新されました。これにより、無効なリスト内の部分文字列の一致が排除されます。ただし、OPがサブ文字列と一致することを望まないことを前提としています。

^[a-z0-9]+_[0-9\/]+_[A-Z0-9:\s]+$

たとえば、Pythonでは次のようになります。

>>> import re
>>> s = 'b_06/18/2012_06:02:34 PM'
>>> pattern = '^[a-z0-9]+_[0-9\/]+_[A-Z0-9:\s]+$'
>>> m = re.match(pattern, s)
>>> m.group(0)
'b_06/18/2012_06:02:34 PM'            # <======== matches from valid list

>>> s = 'CCC Valuation_CCC Valuation_b_06/28/2012_05:57:20 PM'
>>> m = re.match(pattern, s)
>>> m.group(0)
Traceback (most recent call last):    # <======= does NOT match from invalid list
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
于 2012-11-14T02:15:47.670 に答える
1
^[^_]+_[0-9\/]+_[0-9:]+\s[AM|PM]
于 2012-11-14T03:06:35.760 に答える