![](/img/trans.png)
[英]Use regex pattern to replace numbers followed by a substring or numbers followed by a space and then substring
[英]How to apply pipe (regex OR) to a specific substring of pattern so that it matches groups followed by EITHER a set of characters OR EOL?
我有一系列的问题和答案,我想在问题上分开。
s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2'
re.split('(Q\d.*?)Q\d', s)
结果:
['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2']
我想捕获以'Q#'开头的部分,然后是另一个'Q#'或该行的结尾。 所以我尝试使用这个:
re.split('(Q\d.*?)Q\d|$', s)
['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2']
还有这个:
re.split('(Q\d.*?)(Q\d|$)', s)
['', 'Q1 blah1 Ans BLAH1 ', 'Q2', ' blah2 Ans BLAH2']
但是,他们没有给我预期的结果。 由于|
使用不当,它在第一种情况下不起作用 ,但我不知道如何纠正它。 在第二种情况下, Q2
不会与blah2 Ans BLAH2
一起被捕获。
编辑:
期望的输出:
['', 'Q1 blah1 Ans BLAH1 ', 'Q2 blah2 Ans BLAH2']
尝试拆分以下模式:
\s+(?=Q\d+)
这使用了一个积极的先行断言,断言但不消耗,下一个问题就是开始。
s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2'
print re.split('\s+(?=Q\d+)', s)
['Q1 blah1 Ans BLAH1', 'Q2 blah2 Ans BLAH2']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.