使用列表作为python中正则表达式的参数

时间:2018-03-01 13:26:15

标签: regex python-2.7

我正在构建正则表达式以在我的文本中查找日期。我创建了日期名称,日期和特殊字符的列表。

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-bootstrap/0.32.1/react-bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<div id="container">
  
</div>

我也编译了它们,如下所示。

dict_month_name =['january','february','march','april','may','june','july','august','september','october','november','december']

dict_day =['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']

dict_special_char = ['-', '/', '.', ',' ,'',' ']

现在,在我下面显示的正则表达式中,我想使用我之前创建的列表的不同变体。对于例如搜索日期,如2017年1月1日,正则表达式将是 -

month_name = re.compile('|'.join(dict_month_name))

day = re.compile('|'.join(dict_day))

special_char = re.compile('|'.join(dict_special_char))

但是,正则表达式不会返回任何输出。我需要使用正则表达式而不是日期时间模块来解决这个问题。有没有办法可以将我的列表包含在正则表达式中,如上所示?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式组合正则表达式:

\b(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)[\-\/\.\,\ ]\s+(?:january|february|march|april|may|june|july|august|september|october|november|december)\s+[0-9]{4}\b

请参阅Python demo

在这个例子中,正则表达式将是

re.I

您会看到模式现在是更大模式的一部分。 [re.escape(x) for x in dict_special_char]支持不区分大小写的匹配。

另请注意,应使用class myClass(): @staticmethod def all_object(): pass myInstances = [] def __init__(self, myStr01, myStr02): self.myStr01 = myStr01 self.myStr02 = myStr02 self.__class__.myInstances.append(self) myObj01 = myClass("Foo", "Bar") myObj02 = myClass("FooBar", "Baz") 转义特殊字符,以便与字面字符匹配。