Python 正则表达式循环在60次迭代后停止

Python 正则表达式循环在60次迭代后停止,python,regex,for-loop,Python,Regex,For Loop,我试图找到一个正则表达式模式并将其放入一个dataframe列中,同时循环另一列的值 问题:在第60次迭代之前,它一直工作得很好,但之后它只显示NaN。我有40万条参赛作品,其中大部分应该是匹配的 这是为什么?我该如何修复它 import re new_mail = [] for urlcore in re.finditer('https*://[www.]*(\S*).*\.(fr|com)',str(df['Site_Web'])): yolo = urlcore.group(1)

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

问题:在第60次迭代之前,它一直工作得很好,但之后它只显示NaN。我有40万条参赛作品,其中大部分应该是匹配的

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

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)

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

正确的正则表达式:

(?: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}\。*

您是否使用应该匹配且不匹配的正则表达式字符串测试了上面的正则表达式字符串?您可能需要修改正则表达式。您的正则表达式看起来很奇怪,[www.]mach带有
waaaaabbb
abb、
----.``以及核心中的部分(\S*)。与以下内容相匹配
google-----------------.com`您的问题并在
df['Site\u Web']
中显示三行尝试使用
https*:\/\/(www\)?.*。(fr\124; com)
ThomasAyoub您需要使用
https?
中的
,因为
*
与httpsss匹配