2013-07-02 106 views
2

我試圖做的正則表達式,在這裏我需要打印即[az,AZ,_],只有當他們以「」空格結尾一些字符串搜索,但我有一些麻煩,如果我在最後強調,那麼它不會等待空間並執行命令。蟒蛇正則表達式的問題與下劃線

if re.search(r".*\s\D+\s", string): 
    print string 

如果我繼續

string = "abc shot0000 " 

它工作得很好,我確實需要它,只有當字符串用空格\s結束執行它。

如果我堅持

string = "abc shot0000 _" 

那麼它不會等待空間\s並執行該命令。

回答

2

您使用search這個功能,因爲它的名字說,搜索在您的字符串,如果方式出現,這就是你的兩個字符串的情況。

您應該添加$到你的正則表達式搜索字符串的結尾:

if re.search(r".*\s\D+\s$", string): 
    print string 
+0

謝謝,它現在的作品現在..我幾乎SPN在這2小時.. .. :) – abhishekgarg

1

您需要在字符串的結尾與$錨定RE:

if re.search(r".*\s\D+\s$", string): 
    print string 
1

使用$

>>> strs = "abc shot0000 " 
>>> re.search(r"\s\w+\s$", strs)  #use \w: it'll handle A-Za-z_ 
<_sre.SRE_Match object at 0xa530100> 
>>> strs = "abc shot0000 _" 
>>> re.search(r"\s\w+\s$", strs) 
#None