正则表达式匹配至少包含一定比例数字的行:字母

Posted

技术标签:

【中文标题】正则表达式匹配至少包含一定比例数字的行:字母【英文标题】:Regex to match lines that contain at least a certain ratio of numbers:letters 【发布时间】:2022-01-15 11:20:17 【问题描述】:

我正在寻找一个匹配超过 25% 数字 (0-9) 的行的正则表达式。

说到正则表达式,我完全迷失了。任何帮助或指导将不胜感激。我解决正则表达式问题的常用策略是 google it。

或者,如果这不能在正则表达式中完成,有没有办法在 Notepad++ 或其他工具中完成?

【问题讨论】:

这似乎不是你可以用正则表达式做的事情,它们无法计数和比较。 @yuuu 你能和我们分享一个简单的数据吗?有可能 @HajiRahmatullah 数据种类繁多,包括日期、价格、重量、距离、长线(255+ 个字符)和短线(5 个字符)。一个通用的解决方案会很好,但即使是适用于某些情况的解决方案也会很好。 【参考方案1】:

简短回答:很遗憾,这是不可能的。

长答案:这是可能的,但仅适用于非常短的线并且假设所有线的长度相同。

例如,您可以使用 4 个字符的行:

(^[a-zA-Z]*\d[a-zA-Z]*$)|(^[a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z]*$)|(^[a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z]*$)|(^\d\d\d\d$)

我不知道有什么工具可以做你想做的事,但当然可以编写一个简短的 python 脚本来做到这一点。

with open('text.txt') as f:
    for line in f:
        numbers = sum(c.isdigit() for c in line)
        letters = sum(c.isalpha() for c in line)
        if numbers/letters > 0.25:
            #do something 

【讨论】:

以上是关于正则表达式匹配至少包含一定比例数字的行:字母的主要内容,如果未能解决你的问题,请参考以下文章

匹配字符串中至少 1 个数字和 1 个字符的正则表达式模式

正则表达式如何判断只能有数字和字母,并且至少一位

Shell编程Shell中的正则表达式

求一个正则表达式,要求 数字,大写字母,小写字母,特殊字符 至少两种或两种以上组合的正则表达式。

具有至少 1 个数字和 1 个字符且固定长度为 11 的字母数字字符串的正则表达式

php 正则匹配包含字母数字以及下划线,且至少包含2种