正则表达是怎样取以a开头后的所有字符串?

目标字符串"xxab未来a未怎么样"
想得到所有以a开头的字符串,即“ab未来a未怎么样”和“a未怎么样”
这个匹配表达是怎么写?

阅读 6.1k
4 个回答

没找到特别简单的方法,你看看这样行不行?

import re

target = 'xxab未来a未怎么样'
pattern = re.compile(r"a(.+)")
target_cy = target

for num in range(target.count('a')):
    result = re.findall(pattern, target_cy)
    target_cy = result[0]
    target_final = 'a' + target_cy
    print(target_final)

ab未来a未怎么样
a未怎么样

可参考:Python爬虫学习之(三)| 快速入门正则表达式

import re

s, p = 'xxab未来a未怎么样',  re.compile(r"a.*")
r = next(p.finditer(s), False)
while r:
    print(r.group()) # 结果
    r = next(p.finditer(s, r.start() + 1), False)

import re

p = re.compile('(a.*)')

# 递归版本
def foo_rec(s):
    m = p.search(s)
    if m is None:
        return
    sa = m.group(0)
    print(sa)
    return foo_rec(sa[1:])

# 循环版本
def foo_lp(s):
    while 1:
        m = p.search(s)
        if m is None:
            break
        sa = m.group(0)
        print(sa)
        s = sa[1:]
>>> content = 'xxab未来a未怎么样'
>>> foo_rec(content)
ab未来a未怎么样
a未怎么样
>>> foo_lp(content)
ab未来a未怎么样
a未怎么样
推荐问题
宣传栏