需要一些关于RegEx over 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)
我需要选择所有部分* _add及其内容。 例如:
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.]*\)"
感谢您的帮助。
答案 0 :(得分:0)
我会将模式精确到仅在行的开头和结尾匹配,并使用带[\s\S]
的惰性量词:
r"(?m)^(part\d+_add)\([\s\S]*?\)$"
<强>详情:
(?m)
- 内联re.MULTILINE
修饰符版本,使^
与第一行匹配,$
与第一行匹配^
- 开始行(part\d+_add)
- 第1组捕获part
,1位数,_add
\(
- 文字(
[\s\S]*?
- 任意0个字符,尽可能少\)$
- 该行末尾的)
。