2014-03-02 170 views
1

有沒有辦法在Python中嵌套正則表達式? 比如我有Python中的嵌套正則表達式

r1 = re.compile(r'SO ON') 

我能有這樣的事情

r2 = re.compile(r'WHATEVER AND (r1)*') 

驗證「無論等等。」這個例子。

我試着找到這個,但找不到任何解決方案。

+0

是否使每個模式的字符串和連接它們不起作用? –

+0

是的,但這可能是一個字符串可以容納的功能有限.. –

回答

1
r1 = re.compile(r'SO ON') 
r2 = re.compile(r'WHATEVER AND (%s)*' % r1.pattern) 

這是不實際使用正則表達式的任何特殊功能,它使用string formatting。多個字符串可以傳入:

r'WHATEVER AND (%s) (%s)' % (r1.pattern, 'hello') 
+0

謝謝。我知道*給這個問題隨機的例子,嵌套正則表達式的能力是什麼。將接受何時可用。謝謝! –

+0

#U2EF1多於一個正則表達式的語法是什麼?或者這是不可能的? r2 = re.compile(r'WHATEVER AND(%s)*'%r1.pattern,%r3.pattern) –

+1

我覺得道義上的責任是指出這個例子使用*舊式*字符串格式,並且在Python中未來的浪潮是使用* new-style *字符串格式,如'r2 = re.compile(r'WHATEVER AND({})*'。format(r1.pattern))'有很多原因爲什麼這是優於*舊式*語法。閱讀它們看看[這裏](http://docs.python.org/2/library/string.html#format-examples)。 – SethMMorton

0

我覺得有道義上的責任指出,這嚴格支持沒有標誌的regexen。只要你開始使用像re.MULTILINE這樣的標誌,這種方法就無法工作。 Perl在正則表達式中使用正則表達式很棒。我希望我能找到一個好的Python解決方案。