2012-11-14 85 views
0

什麼是正則表達式匹配一個字符串和兩個下劃線來分解3個字符串。如果可能的話,這也可以是SQL'like'語句。兩個下劃線的正則表達式

比賽:

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 
+3

你嘗試過什麼了嗎?這似乎是一個非常簡單的正則表達式。如果你對正則表達式一無所知,你應該首先找到一個教程,然後回過頭來問一個真正的問題。 – siride

+0

我已經嘗試了不同的正則表達式,但我不知道如何讓它只捕獲兩個下劃線字符串,而不是三個。 – anton2g

+0

你可以發佈那些正則表達式,所以我們可以看到你有什麼?你可能並不遙遠。不過,我們不會給你答案。 – siride

回答

3

如果所有的數據都與你的例子一致的,那麼這應該工作:

編輯:更新以匹配整條線。這將排除無效列表中的任何子字符串匹配。但是,它假定OP不想匹配任何子字符串。

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

例如,在蟒蛇:

>>> 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' 
+0

這很接近,但實際上它不符合這種情況: CCC Valuation_CCC Valuation_b_06/28/2012_05:57:20 PM – anton2g

+0

@ anton2g我更正了我的解決方案。假設您對匹配子字符串不感興趣,因爲這將匹配整行。如果這不正確,請告訴我。 – David

+0

由於任何原因,這不匹配任何應匹配的字符串。 – anton2g

1
^[^_]+_[0-9\/]+_[0-9:]+\s[AM|PM] 
+0

請記住縮進代碼的四個空格(或用反引號圍住代碼')。否則,Markdown會以各種不想要的方式吃你的午餐。 – Telemachus

+0

@Telemachus謝謝你的提示。我以前從來不知道。 – anton2g

相關問題