Python:在正则表达式中使用变量值? [复制]

Posted

技术标签:

【中文标题】Python:在正则表达式中使用变量值? [复制]【英文标题】:Python: Using variable values in regular expressions? [duplicate] 【发布时间】:2013-09-11 18:36:55 【问题描述】:

我正在搜索一个字符串并返回至少有 n 个字符长且以“hi”开头并以“bye”结尾的匹配项。

假设n = 10str = "himalayashibye"

我想做:

stringFinder = re.findall("hi.n-5*bye",str)

(我从 n 中减去 5,因为 hi 和 bye 已经构成了 n 个字符中的五个。)

但是,这似乎不起作用。

有什么建议吗?

【问题讨论】:

抱歉重复,感谢您的参考。这回答了我的问题! 即使你的语法正确,也不会返回你想要的。我相信它会返回整个字符串而不是“hi”和“bye”的实例。你可能想要re.match 【参考方案1】:

字符串形式(上面的注释地址)已被使用。所以继续它,例如:

"hi.%d*bye" % (n - 5)

但是请注意,这仍然会产生一些不太正确的结果,并且使用 n = 10 会导致:

"hi.5*bye"

这不太对,因为.5* 的意思是“匹配 5 个 (.5) 的组”0 次或更多次(所以 0、5、10、15 ..)。有许多词不在这些边界上,不会匹配,例如hi1234567bye。这不匹配,因为1234567 不是 5 组的倍数。

相反,请考虑.5,,它将“匹配至少 5 次”并且只接受比 hi12345bye 更长的词。

【讨论】:

我认为 OP 至少需要 5 个所以应该是 5, @Cfreak 我同意(重新阅读后),编辑了答案。谢谢。【参考方案2】:

我基本同意 user2246674,尽管最初的问题是“至少 n 个字符长”。因此必须使用.5,

>>> import re
>>> n = 10
>>> pat = r"hi.%d,bye"%(n-5)
>>> pat
'hi.5,bye'
>>> s = "himalayashibye"
>>> re.findall(pat, s)
['himalayashibye']
>>> 

【讨论】:

以上是关于Python:在正则表达式中使用变量值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter性能测试常见问题集(2)

JAVA读取字符串中某个变量值,并进行简单比较

为啥在 Python 的正则表达式中使用 'r'? [复制]

如何在 python 中使用变量作为正则表达式? [复制]

Python 中如何打印变量值

python 使用.format()在Python中打印变量值