【发布时间】:2020-12-10 16:11:09
【问题描述】:
我想从 text = "otherstuff word1 + word2" 这样的文本字符串中获取 word1 和 word2。
我设法使用这个后向正则表达式得到一个词:
r1 = re.search(r'(?<=\+\s)\w+', text) # Get word2
但每当我尝试对前瞻执行相同操作时,正则表达式它不会返回任何内容
r2 = re.search(r'(?=(\s\+))\w+', text) # Get None
我做错了什么?
【问题讨论】:
-
这个模式
(?=(\s\+))\w+断言从当前位置直接向右的应该是一个空白字符,但是你用一个不匹配的字符开始匹配。 -
您可以使用单个模式和 2 个捕获组
(\w+)\s\+\s(\w+)regex101.com/r/Ab94gT/1 或反之(?<=\+\s)\w+|\w+(?=\s\+)regex101.com/r/FRk5Hs/1 来获取这两个词