我目前正在编写一个脚本,以从“ www.lyrics.com”网站获取歌词。我有这个:
import os, string, re, requests
print("Enter lyrics.com site:")
url = input()
lyrics_raw_html = requests.get(url + '.html')
lyrics_raw = re.findall(r'<pre id=\"lyric-body-text\" class=\"lyric-body wselect-cnt\" dir=\"ltr\" data-lang=\"en\">([^]+)<\/pre>', lyrics_raw_html.text)
lyrics = re.sub(r'(<.+>)', '', lyrics_raw[0])
print(lyrics)
,当我输入页面(例如this页面)时,出现此错误:
File "C:\Users\MYNAMEHERE\AppData\Local\Programs\Python\Python37-32\lib\sre_parse.py", line 532, in _parse
source.tell() - here)
re.error: unterminated character set at position 91
似乎来自我的正则表达式,但是经过一番修补,我不知道问题出在哪里。任何帮助都很好!
谢谢。
答案 0 :(得分:1)
在兼容ECMAScript的正则表达式中(该正则表达式可能是为该正则表达式引擎编写的),[^]
用于匹配任何字符,它是一个有效的字符类,它与“任何东西都匹配”匹配,因此匹配一切。
您应在此处使用[\s\S]*?
而不是[^]+
来匹配任何0个以上的字符,并尽可能少地匹配。