source= "<br />, systemd-system.conf(5), locale.conf(5),<br /> systemctl(1), journalctl(1), systemd-notify(1), daemon(7),sd-<br /> daemon(3), systemd.unit(5), systemd.special(5), pkg-config(1), kernel-<br /> command-line(7), bootup(7), systemd.directives(7)"
source= sub(compile(r"([\, ]+)(?:([A-Za-z\.\-]+))?(?:(<br /> {7}))?([A-Za-z\.\-]*)(\([0-9]\))", DOTALL), r"\1[\2]\3[\4\5]", source)
有了这个,我得到了无与伦比的群体错误 但是在regex101.com上,这给出了
<br />, [systemd-system.conf][(5)], [locale.conf][(5)],[]<br /> [systemctl(1)], [journalctl][(1)], [systemd-notify][(1)], [daemon][(7)],[sd-]<br /> [daemon(3)], [systemd.unit][(5)], [systemd.special][(5)], [pkg-config][(1)], [kernel-]<br /> [command-line(7)], [bootup][(7)], [systemd.directives][(7)]
结果并不是我所期待的结果 我需要
<br />, [systemd-system.conf(5)], [locale.conf(5)],<br /> [systemctl(1)], [journalctl(1)], [systemd-notify(1)], [daemon(7)],<br /> [sd-daemon(3)], [systemd.unit(5)], [systemd.special(5)], [pkg-config(1)], <br /> [kernel-command-line(7)], [bootup(7)], [systemd.directives(7)]
答案 0 :(得分:1)
我认为你让它变得复杂,试试这个:
r"([A-Za-z\.\-]+\([0-9]\))", r"[\1]"
它会查找string-with.extras(5)
,并使用[ ]
如果你想删除一些与这个正则表达式不匹配的字符(如sd-
中的daemon(7), sd-
),你可以在结果上使用第二个:
r"([^[])[A-Za-z\.\-]+", r"\1"
将删除之前没有string-with.extras
的任何[
并将其删除。
答案 1 :(得分:1)
谢谢你们两位 我到了那里(版本5),但我的代码中出现了无法匹配的组错误。
通过添加|来解决就在前面的br标签(版本7)。