正则表达式匹配至少包含一定比例数字的行:字母
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
【讨论】:
以上是关于正则表达式匹配至少包含一定比例数字的行:字母的主要内容,如果未能解决你的问题,请参考以下文章
求一个正则表达式,要求 数字,大写字母,小写字母,特殊字符 至少两种或两种以上组合的正则表达式。