匹配模式中的任何位置?

En-*_*ion 4 regex

我想匹配以下模式:

Exxxx49 (where x is a digit 0-9)
Run Code Online (Sandbox Code Playgroud)

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

我在用:

^*E[0-9]{4}49*$
Run Code Online (Sandbox Code Playgroud)

但它只匹配E123449.

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

Cha*_*les 11

删除^$搜索字符串中的任何位置.

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


bra*_*h14 6

我会去的

^.*E[0-9]{4}49.*$
Run Code Online (Sandbox Code Playgroud)

编辑:

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

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

它会匹配

  • ^.* 一切从,包括行的开始
  • E[0-9]{4}49 请求的模式
  • .*$ 在图案之后翻转,包括线的末端

  • 修改一下就好了。正则表达式是通常需要对它们进行解释的事情之一。对于初学者来说,它们可能非常神秘。 (4认同)

Uni*_*ron 5

您原来的正则表达式一开始就有正则表达式模式语法错误*。修复它并将其更改为:

.*E\d{4}49.*
Run Code Online (Sandbox Code Playgroud)

此模式用于在锚定的引擎(大多数引擎)中进行匹配,例如 Java。因为您忘记指定语言。

  • .*匹配任意数量的序列。由于它包围匹配项,只要该匹配项位于字符串中,就会匹配整个字符串。

这是一个正则表达式演示

  • 没必要这么贪心 (2认同)