如何使用 re.findall 在字符串中查找一个或两个整数?

问题描述 投票:0回答:1

我正在编写一些基本代码,其中列出了可用的串行端口,然后根据描述中所需的端口名称(即“串行设备”)分配所需的端口并从中接收信息等。

我发现的问题是连接的设备可能是从“COM4”到“COM99”的任何设备,而我无法提前知道这一点。

下面是我编写的代码的相关部分。

ports = list(serial.tools.list_ports.comports())
for p in ports:
    print(p.description)
    if 'Serial Device' in p.description:
        find_com = re.findall(r'COM[0-9][0-9]',p.description)

但是,我无法弄清楚如何根据 COM 是否以一位数或两位数结尾来使我的代码正常工作。 我发现当使用两套时

find_com = re.findall(r'COM[0-9][0-9]',p.description)

任何带有一位数字的 COM 都会被遗漏。 但是当使用单个[套装]时

find_com = re.findall(r'COM[0-99]',p.description)
# OR
find_com = re.findall(r'COM[00-99]',p.description)

这会错过任何具有两位数的 COM(即 COM12)

我觉得我已经接近能够连接到正确的 COM,无论它是以一位数还是两位数结尾,但我错过了一些东西?

python python-3.x python-re findall
1个回答
0
投票

r'COM\d{1,2}'
将匹配
COM
,然后恰好匹配一或两个
d
数字。

© www.soinside.com 2019 - 2024. All rights reserved.