繁体   English   中英

如何从python中的列表中区分字符串和正则表达式?

[英]How to differentiate string and regex from list in python?

我有一个像下面这样的列表,其中包含字符串和正则表达式模式
['sync', r'\\1', r'\\1', 'topper', r'\\2', 'holder', 'average']

我想将字符串和正则表达式模式拆分为单独的列表,例如

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

我该如何在python中做到这一点?

字符串和正则表达式之间唯一可能的区别是,并非所有字符串都是有效的正则表达式。 因此,最简单的确定方法是尝试并查看(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分开-它们是相同的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM