繁体   English   中英

正则表达式中的组未按预期捕获组

[英]group in regex not capturing the groups as intended

我有以下字符串

"""<note date="8/31/12">
    <to>Tove</to>
    <from>Jani</from>
    <heading type="Reminder"/>
    <body>Don't forget me this weekend!</body>"""

我想用组捕获打开的标签,以便得到以下 output

预期 Output

[('note', ' date="8/31/12"'), ('to', ''), ('heading', ' type="Reminder"/'),  ('body', '')]

但是我尝试使用这种模式在此处输入图像描述

我尝试使用以下模式

我得到的 output 是

[('note', ' date="8/31/12">'), ('t', 'o>Tove</to>'), ('fro', 'm>Jani</from>'), ('heading', ' type="Reminder"/>'), ('bod', "y>Don't forget me this weekend!</body>")]

我应该如何正确捕获这两个 go 以便我得到预期的 output

您的第二组是可选的,因此您需要 append a '?': <([az]+)(\s?\w+=?"?.*)?>

作为一般提示,寻找你不想看到的东西而不是你想看到的东西。 例如,代替<([az]+)您可以捕获所有内容,直到找到分隔符: <([^\s>\/]+) 不要搜索你可能得到的所有东西,而是搜索肯定会结束你的字符串的符号: [^>]+

所以给你一个更好的解决方案: <(\w+)([^>]+)?> 我没有实施第一个建议,因为您的标签似乎不包含特殊符号。

PS:您下次应该将您的正则表达式作为文本发布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM