【发布时间】:2014-07-22 03:47:57
【问题描述】:
一位堆栈溢出用户向我展示了https://pythex.org/,它允许您构建和测试正则表达式。
我已经成功地只写了表达式,但是当涉及到在 python 中实际使用它时,re.模块我很困惑。
我不明白的是什么时候用.compile,什么时候做re.search -->
如果我搜索括号内的文本并且不止一个,我认为我应该使用 .group[x] 其中 x 是您要返回的项目的索引
示例
pattern = re.compile(r'View All \((\d*)\)')
number = pattern.search(data).group(2);
据我了解,如果我有以下内容,number_connections 变量在打印时将是
View All (8) View All (16) View All (12)
结果
Print number
16
我不明白的是:当您要查找的文本不止一次出现时,您如何遍历它们,以及如何计算有多少?
For example: number.count() would return, found 3
for i in number: (this doesn't work because match is a regular expression object???)
print i
但是当正则表达式中只有一个您要查找的文本时会发生什么?
示例
正则表达式: 模式 = re.compile('[a-zA-Z]\s[a-zA-Z]/[a-zA-Z]/[a-zA-Z]') email = pattern.search(data).group(1);
结果
data: "email-id":"FisrtName LastName/Australia/ABC"}]</p></body></html>
should return: firstname lastname/Australia/ABC
页面上可能有也可能不超过一个 - 在这种情况下,始终使用 result[0] 将不起作用,因为页面上可能只有一个电子邮件地址实例。
现在我意识到我的语法显然是错误的,但这样做也给了我以下信息,所以我正在寻找有关如何在使用 https://pythex.org/ 构建正则表达式后正确使用它的指导:
email = pattern.search(data)
print email
<_sre.SRE_Match object at 0x0553B090>
【问题讨论】:
标签: python regex web-scraping syntax-error