我想匹配以下模式:
Exxxx49 (where x is a digit 0-9)
例如,E123449abcdefgh
,abcdefE123449987654321
都有效。即,我需要在字符串中的任何位置匹配模式。
我正在使用:
^*E[0-9]{4}49*$
但它只匹配E123449
。
如何在模式前面或后面允许任意数量的字符?
答案 0 :(得分:10)
删除^
和$
以搜索字符串中的任意位置。
在你的情况下,*
可能不是你想要的; E[0-9]{4}49
应该足够了。这将找到一个E,后跟四个数字,然后是字符串中任意位置的4和9。
答案 1 :(得分:5)
我会去
^.*E[0-9]{4}49.*$
编辑:
因为它满足了OP的所有要求。
匹配
^.*
所有内容,包括行的开头E[0-9]{4}49
请求的模式.*$
在模式之后翻转,包括行的结尾答案 2 :(得分:1)
您的原始正则表达式在第一个*
处有正则表达式模式语法错误。修复它并将其更改为:
.*E\d{4}49.*
此模式用于匹配锚定的引擎(大多数引擎),如Java。因为你忘了指定一种语言。
.*
匹配任意数量的序列。由于它围绕匹配,只要此匹配位于字符串中,这将匹配整个字符串。这是regex demo!
答案 3 :(得分:1)
只需使用它:
E[0-9]{4}49
答案 4 :(得分:0)
如何在模式前或模式后允许任何数量的字符?但它只匹配
E123449
如果语言
支持,请使用global
标记/E\d{4}49/g
OR
尝试使用(E\d{4}49)+
(...)
进行分组