此问题在此处已有答案:
re.findall behaves weird(3个答案)
7天前关闭
我有一个小正则表达式(\d\.){2,}
来拆分一本书的章节。章节被识别为一个数字后面跟着一个点,这种组合至少出现两次。它应该只是分裂章节没有单一的清单。下面是一个示例:
3.2.4.2. porta pellentesque
139. Nunc maximus maximus aliquet?
a) dignissim
b) volutpat
c) ullamcorper
3.2.4.3. ligula at condimentum fringilla
152. Sed dapibus nulla mi, id lobortis ligula bibendum vehicula?
a) vestibulum
b) pellentesque
c) tempus
d) rutrum
153. Lorem ipsum dolor sit amet. Sed iaculis lacus pellentesque, non auctor eros lobortis?
a) suscipit
b) vulputate
c) vestibulum
d) congue
3.2.5. elementum quis
字符串
它应该在3.2.4.2.
,3.2.4.3.
和3.2.5.
处拆分。正则表达式生成器识别正确的匹配,但它总是在末尾添加不需要的组匹配,我没有摆脱它。结果如下所示(一个项目符号是一个分割):
3.2.4.
个2.
个- ...
3.2.4.
个3.
个- ...
3.2.
个5.
- ...
我希望是三个劈叉而不是九个。我尝试了贪婪/懒惰量词,各种封装,但不幸的是我没有得到正确的。值得一提的是,整个事情应该在Python项目中运行。为了更好地理解here is the link to the regexbuilder,我使用了。
1条答案
按热度按时间42fyovps1#
您的捕获组只包含该数字的一个示例,并且您在该组上匹配多次。如果你想把所有的示例放在一个组中,你需要把量词放在组中。由于您可能还希望丢弃包含量词的内部组,因此您可能希望使用
?:
来忽略该组。字符串
正如在对原始帖子和相关问题的评论中提到的,这也可以通过不使用捕获组与
findall
相结合来解决,这可能是这个问题的更好解决方案。型