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

2024-09-27 07:31:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我只知道我感兴趣的部分AAA前面和后面的几个字符是什么

使用sed可以使用字符串执行类似的操作:

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

这将给我1234作为结果

如何在Python中执行相同的操作


Tags: 字符串echostring字符sed感兴趣zzzaaa
3条回答

使用正则表达式-documentation作进一步参考

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
>>> s = 'gfgfdAAA1234ZZZuijjk'
>>> start = s.find('AAA') + 3
>>> end = s.find('ZZZ', start)
>>> s[start:end]
'1234'

然后,您也可以将regexps与re模块一起使用,如果您愿意的话,但在您的情况下这不是必需的

正则表达式

import re

re.search(r"(?<=AAA).*?(?=ZZZ)", your_text).group(0)

如果your_text中没有“AAA”和“ZZZ”,则上述原样将以AttributeError失败

字符串方法

your_text.partition("AAA")[2].partition("ZZZ")[0]

如果your_text中不存在“AAA”或“ZZZ”,则上述内容将返回空字符串

PS Python挑战

相关问题 更多 >

    热门问题