2017-01-03 78 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分开 - 它们是相同的数字。