Skip to main content
 首页 » 编程设计

python正则表达式,正向后看

2024年10月01日6mq0036

我正在尝试更正此代码并继续获取

sre_constants.error: look-behind requires fixed-width pattern 

请帮助我摆脱这个错误...我想要做的是获取变量 w2 之后的数字,它是变量w.

import requests 
import re 
import bs4 
 
 
def verse(book, chapter): 
        html = requests.get("http://www.holybible.or.kr/B_NIV/cgi/bibleftxt.php?VR=NIV&VL={}&CN={}&CV=99" 
                            .format(book, chapter)).text 
        bs = bs4.BeautifulSoup(html, 'html5lib') 
        ol = bs.findAll('ol')   
        section_cnt = int(ol[-1].attrs['start']) + len(ol[-1].findAll('li')) - 1 
        w = re.search(r'(?<=height=12>\s<b>)(\d+\s)?[a-zA-Z]+\s[0-9]+', html).group() 
        w2 = re.search(r'(?<=height=12>\s<b>(\d+\s)?[a-zA-Z])+\s[0-9]+', html).group() 
 
        print(w, 'has', w2, 'chapters', section_cnt, 'verses') 
 
if __name__ == '__main__': 
    verse(1, 27) 

请您参考如下方法:

你不需要在这里回顾。

使用

(?:height=12>\s<b>(?:\d+\s)?[a-zA-Z]+)(\s[0-9]+) 

查看演示。

https://regex101.com/r/k1cYXS/1

取而代之的是 group 1

w2 = re.search(r'(?:height=12>\s<b>(?:\d+\s)?[a-zA-Z]+)(\s[0-9]+)', html).group(1)