带python的正则表达式需要选择最近的部分

2024-05-13 20:14:48 发布

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

需要一些关于python正则表达式的帮助。 我有这段文字:

part101_add(
    name = "part101-1",
    dev2_serial = "dev_l622_01",
    serial_port = "/dev/tty-part101-1",
    yok_serial = "YT8388"
)
yok_tar_add("YT8388", None)
part2_add(
    name = "part2-1",
    serial_number = "SERIALNUMBER",
    serial_port = "/dev/tty-part2-1",
    yok_serial = "YT03044",
    yok_port_board = "N"
)
yok_tar_add("YT03044", None)

我需要选择所有部分*\u添加及其内容。 例如:

part101_add:

name = "part101-1",
dev2_serial = "dev_l622_01",
serial_port = "/dev/tty-part101-1",
yok_serial = "YT8388"

part2_add:
serial_number = "SERIALNUMBER",
serial_port = "/dev/tty-part2-1",
yok_serial = "YT03044",
yok_port_board = "N"

问题是我不能把结果分开。 使用此图案时:

regex = r"(.*?_add)\([\s\S.]*\)"

谢谢你的帮助。你知道吗


Tags: namedevnoneaddportdev2serialtar
1条回答
网友
1楼 · 发布于 2024-05-13 20:14:48

我会将模式精确到只在行首和行尾匹配,并使用带有[\s\S]的惰性量词:

r"(?m)^(part\d+_add)\([\s\S]*?\)$"

this regex demo

详细信息:

  • (?m)-一个内联的re.MULTILINE修饰符版本,使^与行开始匹配,使$与行结束匹配
  • ^-行的开始
  • (part\d+_add)-第1组捕获part,1+个数字,_add
  • \(-文字(
  • [\s\S]*?-任何0+个字符,尽可能少到
  • \)$-行尾的)。你知道吗

相关问题 更多 >