我想从文本字符串中获得word1和word2,比如text = "otherstuff word1 + word2"。
我成功地使用这个查找后面的正则表达式获得了一个单词:
r1 = re.search(r'(?<=\+\s)\w+', text) # Get word2但是,每当我试图对展望做同样的事情时,regex就不会返回任何东西
r2 = re.search(r'(?=(\s\+))\w+', text) # Get None我做错什么了?
发布于 2020-12-08 17:35:46
你能试试这个吗?刚刚交换了你的\w+和(?=(\s\+))的位置。
r2 = re.search(r'\w+(?=(\s\+))', text)发布于 2020-12-10 08:11:09
我做错什么了?
这个模式(?=(\s\+))\w+断言从当前位置直接到右边的应该是一个空格char \s,但是您可以用一个不匹配的单词char \w开始匹配。
您可以通过使用带有替换|的单个模式来获得两个单词,并切换查找顺序。
(?<=\+\s)\w+|\w+(?=\s\+)要获得这两个单词,您还可以使用两个捕获组,而不是查找:
(\w+)\s\+\s(\w+)import re
pattern = r"(\w+)\s\+\s(\w+)"
s = "otherstuff word1 + word2."
print(re.findall(pattern, s))输出
[('word1', 'word2')]https://stackoverflow.com/questions/65203693
复制相似问题