2017-01-03 40 views
-1

我有類似下面具有字符串和正則表達式模式的列表
['sync', r'\1', r'\1', 'topper', r'\2', 'holder', 'average']
如何區分python中的字符串和正則表達式?

我要拆分的字符串和正則表達式模式分開列表,像

mystring = ['sync', 'topper', 'holder', 'average']
myregex_pattern = [r'\1', r'\1', r'\2']

如何我可以在python中做到這一點嗎?

+0

請問您能否添加一點信息:此列表來自哪裏?接下來你想要在兩個列表中做什麼?謝謝。 – alecxe

+1

你的字符串和正則表達式的特徵是什麼?是\ 1,\ 2,\ 3 ...形式的正則表達式模式嗎? – gkso

回答

4

字符串和正則表達式之間唯一可能的區別是並非所有字符串都是有效的正則表達式。因此,以確定最簡單的方法是簡單地嘗試一下,看看(EAFP):

>>> import re 
>>> l = ['sync', r'\1', r'\1', 'topper', r'\2', 'holder', 'average'] 
>>> for ex in l: 
...  try: 
...    re.compile(ex) 
...  except: 
...    print(ex, 'fails.') 
... 
re.compile('sync') 
\1 fails. 
\1 fails. 
re.compile('topper') 
\2 fails. 
re.compile('holder') 
re.compile('average') 

現在你看到你的一個有效的正則表達式模式的想法是從解釋的想法完全相反(這是什麼是重要的)。

如果您想要將字符串定義爲具有和不具有原始字符串語法的字符串,這是不可能的,因爲結果只是字符串。這就像試圖將1.01.00分開 - 它們是相同的數字。