我正在搜索一个字符串,并返回至少n个字符长的匹配,以“hi”开头,以“bye”结尾。
我们说n = 10
和str = "himalayashibye"
。
我想这样做:
stringFinder = re.findall("hi.{n-5}*bye",str)
(我从n中减去5,因为hi和bye已经组成了n个字符中的5个。)
然而,这似乎不起作用。
有什么建议吗?
答案 0 :(得分:0)
字符串表单(上面的注释地址)已被使用。所以继续它,例如:
"hi.{%d}*bye" % (n - 5)
然而请注意,这仍然会产生一些不太正确的事情,并且n = 10
导致:
"hi.{5}*bye"
这不太正确,因为.{5}*
表示“匹配5个组(.{5}
)”0次或更多次(所以0,5,10,15 ..)。 不会像hi1234567bye
那样匹配这些边界上的许多单词。这不匹配,因为1234567
不是5组的倍数。
相反,请考虑.{5,}
哪个“匹配至少5次”并且只接受超过hi12345bye
的字词。
答案 1 :(得分:0)
我主要同意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']
>>>