首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex循环在60次迭代后停止

Regex循环在60次迭代后停止
EN

Stack Overflow用户
提问于 2019-02-21 22:15:26
回答 2查看 94关注 0票数 1

我试图找到一个正则表达式模式,并将其放在一个dataframe列中,同时循环另一个列的值。

问题:它在60次迭代之前都能正常工作,但之后它只显示NaN。我有40万个条目,它们中的大多数都应该匹配。

为什么会这样?我该如何修复它?

代码语言:javascript
复制
import re

new_mail = []
for urlcore in re.finditer('https*://[www.]*(\S*).*\.(fr|com)',str(df['Site_Web'])):
    yolo = urlcore.group(1)
    new_mail.append(yolo)

df['urlcore'] = pd.Series(new_mail)
df['urlcore'] = df['urlcore'].str.replace('.', '', regex=True).replace('-', '', regex=True)
EN

回答 2

Stack Overflow用户

发布于 2019-02-21 22:49:34

由于(\S*).*,您的正则表达式会遇到性能问题。将其更改为https?:\/\/(www\.)?(\S*)\.(fr|com)

票数 0
EN

Stack Overflow用户

发布于 2019-02-21 23:15:17

正确的正则表达式是:

代码语言:javascript
复制
(?:https?://)?(?:www\.)?([a-zA-Z0-9][a-zA-Z0-9-]{1,61})\.[a-zA-Z]{2,}

注意,您在正则表达式中有三个未命名的组,但是第一个和第二个没有被捕获,因此为了访问核心部分,应该是urlcore.group(1)

在本例中,您需要更改(fr|com)的结尾部分,如果需要处理子域,还需要修改正则表达式以处理以前的可选组(?:[a-zA-Z0-9][a-zA-Z0-9-]{1,61}\.)*

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54809122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档