[英]Python regex - bounded word
我一直在尝试使用正则表达式来识别两个字符之间的单词,但我只是无法成功。 这是我的代码:
re.match(r"\s*\#?\w*(\<)+\s*(?P<method>\w+)\s*(\>)+\w*", "# This <foo> truc")
该句子具有(或没有)python注释(#),并且必须显示group方法。
谢谢您的时间和帮助
您需要将正则表达式更改为在This
和<
之前包含可选空格,然后才能使用groups
属性:
some_match = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\w*", "# This <foo> truc")
some_match.groups()
('<', 'foo', '>')
some_match.groups(1)
'foo'
您缺少一些空格匹配。 在#
字符之后, <
之前和>
。
因此,一种选择是添加缺少的空格匹配:
>>> m = re.match(r"\s*\#?\s*\w*\s*(\<)+\s*(?P<method>\w+)\s*(\>)+\s*\w*", "# This <foo> truc")
>>> m.group('method')
'foo'
但是,如果只需要<
和>
之间的值,则使用re.search
代替,您可以简单地使用正则表达式:
>>> r = re.search(r"\<(?P<method>[^\>]*)\>", "# This <foo> truc")
>>> r.group('method')
'foo'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.