此问题在此处已有答案:
Regex - match everything without whitespace(2个答案)
Regex match entire words only(7个答案)
26天前关闭
截至25天前,社区正在审查是否重新讨论这个问题。
假设我有一个类似'a -> b -> c'
的字符串,我正在寻找一个正则表达式来捕获成对的组,以获得输出[('a','b'), ('b','c')]
。
我试过re.findall(r'(.+)(?=\->(.+))', r'a -> b -> c')
,但这并没有产生所需的输出。
要捕获的值,即'a', 'b', 'c'
通常不只是字母数字。很抱歉没有从一开始就指定这一点,但我认为我对(.+)
的使用使这一点变得明显。所以,也许更一般的情况是'a1 -> b1 b2-b3->c1 c2'
个
所需输出[('a1', 'b1 b2-b3'), ('b1 b2-b3', c1 c2)]
1条答案
按热度按时间jxct1oxe1#
您可以使用
\w
/\S
来代替过于宽泛的.
:个字符
输出:
[('a', 'b'), ('b', 'c')]
另一个更一般的例子:
型
输出:
[('a1', 'b1 b2-b3'), ('b1 b2-b3', 'c1 c2')]
regex demo
或者,如评论中所建议的,一个非纯正则表达式解决方案,用
itertools.pairwise
对re.split
的输出进行后处理:型