除非字符串的开始/结束使用正则表达式,否则选择在单词周围填充



我目前使用regex命令在搜索字符串周围提取pad的5个字符:

 re.findall("(.{5}searchstring.{5})",text)

这在选择所需的文本时工作得很好,除非它位于字符串的最开始或末尾,在那里不再有5个字符的pad可以提取。

我正在寻找正则表达式,它将始终提取5个字符的文本,除非文本是如此接近文本的开始/结束,没有足够的垫-在这种情况下,提取所有它可以。

例如,我正在寻找:

  `searchstring1234567`        to return   `searchstring12345',
  `12searchstring12`           to return   `12searchstring12`
  `1234567searchstring1234567` to return   `34567searchstring12345` 

上面的代码只对其中的第三个起作用,并且对前两个不返回任何值。

在范围量词中定义{min,max}:

>>> re.findall("(.{0,5}searchstring.{0,5})", text)
['searchstring12345', '12searchstring12', '34567searchstring12345']

最新更新