0

我正在使用正则表达式来匹配关键字。是否可以仅在前 25 个字符内检查此关键字?

例如,我想找到"APPLE"

'Johnny picked an APPLE from the tree'- 找到匹配项(前 25 个字符内)

'Johnny picked something from a tree that had an APPLE'- 未找到(因为前 25 个字符内不存在 APPLE)。

这有语法吗?

4

3 回答 3

7

一个简单的解决方案是切掉前 25 个字符,然后进行正则表达式匹配。

myString = 'Johnny picked an APPLE from the tree'
slicedString = myString[:25]
# do regex matching on slicedString
于 2012-08-01T07:53:59.430 回答
2

是的。您在关键字前面加上 0 到 25 个长度(关键字)“任何”字符。

我不确定这是否是实际的 python 语法,但 RE 应该是^.{0,20}APPLE.

编辑:澄清

  • ^.{0,20}APPLE查找子字符串时应使用。在 Python 中使用它。
  • .{0,20}APPLE.*匹配整个字符串时应使用。

另一个编辑:显然 Python 只有子字符串模式,所以^锚是必要的。

于 2012-08-01T07:53:11.600 回答
1

尝试在您的字符串上使用切片:

>>> import re
>>> string1 = "Johnny picked an APPLE from the tree"
>>> string2 = "Johnny picked something from a tree that had an APPLE"
>>> re.match(".*APPLE.*", string1[:25])  # Match
<_sre.SRE_Match object at 0x2364030>
>>> re.match(".*APPLE.*", string2[:25])  # Does not match
于 2012-08-01T07:58:10.297 回答