如何使用正则表达式查找具有特定起始字符串的所有匹配项? [复制]
Posted
技术标签:
【中文标题】如何使用正则表达式查找具有特定起始字符串的所有匹配项? [复制]【英文标题】:How to use a regular expression to find all matches with specific starting strings? [duplicate] 【发布时间】:2020-03-09 11:38:10 【问题描述】:我已经使用 bs4 爬取了一些文本,我想找到与以下起始字符串匹配的所有 url: https://www.104.com.tw/company/
例如,“https://www.104.com.tw/company/aw5oe14?jobsource=checkc”和“https://www.104.com.tw/company/18sepdbk?jobsource=check”
我对RegEx不熟悉并尝试过:
raw = get_page("https://www.104.com.tw/cust/list/index/?page=2&keyword=%E8%87%AA%E5%8B%95%E5%8C%96&order=1&mode=s&jobsource=checkc")
address = re.findall(r'https://www.104.com.tw/company/[\w]+',raw)
print(address)
# where raw is the text crawled, and get_page is function, both of them work correctly.
显示错误为:
TypeError Traceback (most recent call last)
<ipython-input-18-387fb92bcd6d> in <module>
1 raw = get_page("https://www.104.com.tw/cust/list/index/?page=2&keyword=%E8%87%AA%E5%8B%95%E5%8C%96&order=1&mode=s&jobsource=checkc")
----> 2 address = re.findall(r'https://www.104.com.tw/company/.*$',raw)
3 print(address)
/opt/conda/envs/Python36/lib/python3.6/re.py in findall(pattern, string, flags)
220
221 Empty matches are included in the result."""
--> 222 return _compile(pattern, flags).findall(string)
223
224 def finditer(pattern, string, flags=0):
TypeError: expected string or bytes-like object
我应该使用什么正则表达式,或者如果这是 re.findall 语法的问题?
谢谢,
【问题讨论】:
【参考方案1】:最简单的是:
https://www\.104\.com\.tw/company/.+
Regex Demo
在您使用 [\w]+
的原始正则表达式中,这将与整个字符串不匹配,因为 ?
不是 \w
(即 [a-zA-Z0-9_]
)集合的一部分。
【讨论】:
以上是关于如何使用正则表达式查找具有特定起始字符串的所有匹配项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章