使用 re.match 或 re.search 返回多个匹配项

2024-03-12

我正在将一些代码转换为微型蟒蛇 http://micropython.org我陷入了一个特定的正则表达式。

在Python中我的代码是

import re

line = "0-1:24.2.1(180108205500W)(00001.290*m3)"
between_brackets = '\(.*?\)' 

brackettext  = re.findall(between_brackets, line) 
gas_date_str = read_date_time(brackettext[0])
gas_val      = read_gas(brackettext[1])

# gas_date_str and gas_val take the string between brackets 
# and return a value that can later be used

micropython仅实现一组有限的重函数 https://docs.micropython.org/en/latest/library/ure.html

如何仅使用有限的可用功能来实现相同的目标?


您可以按照以下方式做一些事情。反复使用re.search在消耗字符串的同时。这里的实现使用了生成器函数:

import re

def findall(pattern, string):
    while True:
        match = re.search(pattern, string)
        if not match:
            break
        yield match.group(0)
        string = string[match.end():]

>>> list(findall(r'\(.*?\)', "0-1:24.2.1(180108205500W)(00001.290*m3)"))
['(180108205500W)', '(00001.290*m3)']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 re.match 或 re.search 返回多个匹配项 的相关文章

随机推荐