我有一个像下面的列表,其中包含字符串和正则表达式
['sync', r'\1', r'\1', 'topper', r'\2', 'holder', 'average']
我想将字符串和正则表达式模式拆分为单独的列表,例如
mystring = ['sync', 'topper', 'holder', 'average']
myregex_pattern = [r'\1', r'\1', r'\2']
我怎么能在python中做到这一点?
答案 0 :(得分: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.0
与1.00
分开一样 - 它们的编号相同。