如果单词不以数字开头并且单词中有超过 5 个连续数字,则 Python 正则表达式返回 false
单词示例:19181920flupandemic covid19 blackdeath 冠状病毒意大利 covid1920 大流行 sarscov2 2009flupandemic 2020coronaviruspandemicinitaly
应该留在名单上:covid19 blackdeath 冠状病毒意大利大流行 sarscov2
找到了(^\d\w.*$) 但是不知道怎么申请
text = ['19181920flupandemic','covid19','blackdeath','coronavirus','italy','covid1920','pandemic','sarscov2','2009flupandemic','2020coronaviruspandemicinitaly']
text2 = []
for i in range(len(text)):
if len(str(text[i])) <= 15:#слово короче 15 символов
if str(text[i]) and #здесь хочу вставить условия регулярных выражений
text2.append(str(text[i]))
试试这样:
我的版本(以Alioshca Z的先前回答作为样本)
结果:['covid19', 'blackdeath', 'coronavirus', 'italy', 'covid1920', 'pandemic', 'sarscov2']
注意:您提供的输入列表中没有字符串满足标头中的两个条件(即不以数字开头并且连续包含超过 5 个数字)。在您的示例输出中,数字应该只是从 0 到 5。
正则表达式的第二部分可能看起来像这样 - 不是 (re.findall(r'\d{6,}', items)
那些。不是连续 6 个或更多数字。
前面提出的变体会跳过连续位数大于 6 的行(测试用例“sarscov23456789”)。
输出 ['sarscov23456']
如果您的列表包含的不仅仅是前面提到的行,请考虑这一点。
看起来这应该有效:
如果您仍然需要 true,则删除外部否定。