【发布时间】:2018-01-29 22:36:19
【问题描述】:
我正在尝试从文件中提取哈希值,并希望在不直接更改正则表达式的情况下在正则表达式周围添加边界子句 (\b)。
例如,让我们使用这个正则表达式:^\$1\$\w+\$\w+(.)?\w+..$,我已经编译好了:re.compile(r"^\$1\$\w+\$\w+(.)?\w+..$")。现在我想保持正则表达式不变并在它周围添加边界而不直接更改正则表达式本身。所以像:
def add_bound(regex_string):
return r"\b{}\b".format(regex_string)
我遇到的唯一问题是我的正则表达式是在执行之前预编译的,所以它会将它们变成类似<_sre.SRE_Pattern object at 0x7f846a189770> 的东西。有没有办法在已编译的正则表达式周围添加边界?
【问题讨论】:
-
为什么你需要用字边界包裹
^\$1\$\w+\$\w+(.)?\w+..$?那样就行不通了,因为\b^\$需要在$之前添加一个字符字符。当我们确定输入是字面词时,我们只想设置单词边界,在开头和结尾都有单词字符。 -
如果你将它们编译成一个变量,你可以使用
variablename.pattern来获取模式。如果那真的是你想要做的。例如。regex = re.compile("[A-Z]") regex.pattern '[A-Z]'
标签: python regex python-2.7 boundary