2014-02-25 193 views
0

模式在我的Python功能我想,如果提供的參數包含表示正則表達式(EX- r'^\D{2}$')的字符串採取一些行動。我怎樣才能檢查該字符串是否有像這樣的正則表達式?檢查字符串中包含的正則表達式

+2

因此,換句話說,你有一個字符串,並想知道是否可以使用它作爲正則表達式模式? – Kevin

+0

@Kevin是的,正好 – gliese581g

回答

0

試試這個,

import re 
pattern=r'^\D{2}$' 
string="Your String here" 


import re 

try: 
    re.compile(pattern) 
    is_valid = True 
except re.error: 
    is_valid = False 

if is_valid: 
    matchObj = re.search(pattern, string, flags=0) 
    if matchObj : 
     #do something 
else: 
    #do something 
+0

問題說「包含代表正則表達式的字符串」。應該使用搜索,不匹配。 –

+2

我認爲OP從外部源接收字符串''^ \ D {2} $'',並且想要確定它是否可以用作正則表達式。否則,您的代碼只會因不良模式而崩潰,而不會返回有效模式字符串的「True」和「False」。 – Kevin

1

您需要re模塊。

import re 

s = <some string> 
p = <regex pattern> 
if re.search(p, s): 
    # do something 
+0

感謝您的回答。但是可能有太多的正則表達式模式 – gliese581g

+0

太多正則表達式模式?你什麼意思? –

+0

在你的代碼,我必須事先知道哪些模式,我必須檢查字符串對 – gliese581g

0

試試這個:

import re 

match_regex = re.search(r'^\D{2}$','somestring').group() 

# do something with your matched string 
3

也許試圖編譯字符串:

def is_regex(s): 
    try: 
     re.compile(s) 
     return True 
    except: 
     return False 
+0

它不這樣的事情拋出異常的搜索方法:re.compile(「世界你好」) – gliese581g

+1

真實的,但不是一個錯誤的're.compile(「世界你好」 ).match('Hello World')。group(0)=='Hello World'。 –

+1

如果您不希望「Hello World」被視爲有效,您需要定義接受哪些正則表達式子集。很明顯,這意味着你不需要整套的正則表達式。 –

相關問題