[英]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.