首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python regex前瞻性断言

Python regex前瞻性断言
EN

Stack Overflow用户
提问于 2020-12-08 17:17:17
回答 2查看 315关注 0票数 0

我想从文本字符串中获得word1和word2,比如text = "otherstuff word1 + word2"

我成功地使用这个查找后面的正则表达式获得了一个单词:

代码语言:javascript
复制
r1 = re.search(r'(?<=\+\s)\w+', text) # Get word2

但是,每当我试图对展望做同样的事情时,regex就不会返回任何东西

代码语言:javascript
复制
r2 = re.search(r'(?=(\s\+))\w+', text) # Get None

我做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-08 17:35:46

你能试试这个吗?刚刚交换了你的\w+(?=(\s\+))的位置。

代码语言:javascript
复制
r2 = re.search(r'\w+(?=(\s\+))', text)
票数 1
EN

Stack Overflow用户

发布于 2020-12-10 08:11:09

我做错什么了?

这个模式(?=(\s\+))\w+断言从当前位置直接到右边的应该是一个空格char \s,但是您可以用一个不匹配的单词char \w开始匹配。

您可以通过使用带有替换|的单个模式来获得两个单词,并切换查找顺序。

代码语言:javascript
复制
(?<=\+\s)\w+|\w+(?=\s\+)

Regex演示

要获得这两个单词,您还可以使用两个捕获组,而不是查找:

代码语言:javascript
复制
(\w+)\s\+\s(\w+)

Regex演示

代码语言:javascript
复制
import re

pattern = r"(\w+)\s\+\s(\w+)"
s = "otherstuff word1 + word2."
print(re.findall(pattern, s))

输出

代码语言:javascript
复制
[('word1', 'word2')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65203693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档