创建参数化的Python正则表达式模式

时间:2015-03-14 19:15:06

标签: python regex

我想使用re模块创建正则表达式。 但目前还不清楚如何以类似的方式创建一个格式化的字符串来创建一个模式,例如:我需要像

这样的东西
myPattern = r'\s*{linehead}'.format(someText)

这可能吗?

当我使用

if myPattern.search(l) is not None:

我正在

AttributeError: 'str' object has no attribute 'search'

1 个答案:

答案 0 :(得分:1)

正如评论中提到的,myPattern只是一个字符串。 ' r'只是告诉Python它是一个" raw"字符串,不应尝试解释转义文本。

一旦你的正则表达式按你喜欢的方式格式化(注意,因为你将参数命名为" linhead",你需要在format的参数中识别它:

myPattern = r'\s*{linehead}'.format(linehead="someText")

您需要使用re.compile()制作正则表达式对象。

myRegex = re.compile(myPattern)

您现在可以按照原定的目的使用myRegex

if myRegex.search(l) is not None:
    ...

或者,你可以像@IceArdor建议的那样一次性完成:

myPattern = re.compile(r'\s*{linehead}'.format(linehead="someText");

请参阅https://docs.python.org/2/library/re.html#module-re