首页 > 解决方案 > 正则表达式匹配字符串的特定模式,后跟数字

问题描述

样本输入:

___file___name___2000___ed2___1___2___3
DIFFERENT+FILENAME+(2000)+1+2+3+ed10

所需的输出(例如,所有字母和 4 位数字以及文字 'ed' 后跟任意长度的数字:

file name 2000 ed2
DIFFERENT FILENAME 2000 ed10

我正在使用: [A-Za-z]+|[\d]{4}|ed\d+它只返回: file name 2000 ed DIFFERENT FILENAME 2000 ed

我看到这里有一个相关的问答:正则表达式匹配特定字符串后跟数字?

例如 usinged[0-9]*会匹配ed#,但不确定为什么它在上面不匹配。

标签: regex

解决方案


如所写,您的正则表达式是正确的。但是请记住,正则表达式会尝试从左到右匹配其语句。你ed\d+永远不会匹配,因为 ed已经被你的替代品消耗了。[A-Za-z]重新排序您的正则表达式,它会工作得很好:

ed\d+|[a-zA-Z]+|\d{4}

演示


推荐阅读