如何提取两个标记之间的子字符串?

新手上路,请多包涵

假设我有一个字符串 'gfgfdAAA1234ZZZuijjk' 我只想提取 '1234' 部分。

我只知道 AAAZZZ 我感兴趣的部分 1234 之前的几个字符是什么。

使用 sed 可以用字符串做这样的事情:

 echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|"

这将给我 1234 结果。

如何在 Python 中做同样的事情?

原文由 ria 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 387
2 个回答

使用正则表达式 - 文档 供进一步参考

import re

text = 'gfgfdAAA1234ZZZuijjk'

m = re.search('AAA(.+?)ZZZ', text)
if m:
    found = m.group(1)

# found: 1234

或者:

 import re

text = 'gfgfdAAA1234ZZZuijjk'

try:
    found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
    # AAA, ZZZ not found in the original string
    found = '' # apply your error handling

# found: 1234

原文由 eumiro 发布,翻译遵循 CC BY-SA 3.0 许可协议

>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'

然后,如果需要,您也可以将正则表达式与 re 模块一起使用,但这在您的情况下不是必需的。

原文由 Lennart Regebro 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题