匹配模式中的任何位置?

时间:2014-08-13 13:11:17

标签: regex

我想匹配以下模式:

Exxxx49 (where x is a digit 0-9)

例如,E123449abcdefghabcdefE123449987654321都有效。即,我需要在字符串中的任何位置匹配模式。

我正在使用:

^*E[0-9]{4}49*$

但它只匹配E123449

如何在模式前面或后面允许任意数量的字符?

5 个答案:

答案 0 :(得分:10)

删除^$以搜索字符串中的任意位置。

在你的情况下,*可能不是你想要的; E[0-9]{4}49应该足够了。这将找到一个E,后跟四个数字,然后是字符串中任意位置的4和9。

答案 1 :(得分:5)

我会去

^.*E[0-9]{4}49.*$

编辑:

因为它满足了OP的所有要求。

  • “[匹配] Exxxx49(其中x是数字0-9)”
  • “允许前面或后面的任何数量的字符”

匹配

  • ^.*所有内容,包括行的开头
  • 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)+

括号内的capturing groups (...)进行分组

这是online demo

enter image description here