regex - 正则表达式匹配字符串的特定模式,后跟数字
问题描述
样本输入:
___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#
,但不确定为什么它在上面不匹配。
解决方案
如所写,您的正则表达式是正确的。但是请记住,正则表达式会尝试从左到右匹配其语句。你ed\d+
永远不会匹配,因为 ed已经被你的替代品消耗了。[A-Za-z]
重新排序您的正则表达式,它会工作得很好:
ed\d+|[a-zA-Z]+|\d{4}
推荐阅读
- jxbrowser - 如何从 jxbrowser 获取 websocket 数据?
- ios - 无法使用 xpath 在 appium iOS 中找到文本字段,并且名称或 ID 不可用
- numpy - Numpy:沿轴按索引数组选择
- kubernetes - 如何在没有集群级别访问权限的情况下在 AKS 集群中创建 PV?
- java - 将多维数组转换为 Floatbuffer,然后将 OpenGL 纹理转换为批量用于着色器
- linux - 用 sed 替换 log4j 转换模式
- python - Numpy dot 函数:操作数不能在 MLP 中一起广播
- wordpress - 以编程方式添加附件设置错误的永久链接
- flutter - 扑动中的响应式循环进展指标
- javascript - Change Country for Loqate Address Verification Control