正则表达式 - 匹配整个选择

时间:2018-01-15 10:27:21

标签: java regex

我有一个字符串,我想测试一个正则表达式,它会检测是否存在任何匹配项,然后将它们从字符串中删除。

我希望匹配

等模式
�
㊃

任何以&#开头,后跟5个随机数字,以;

结尾的内容

目前我已经想出了这个:

([&#\d;])

哪个有效,但它也选择一个数字或&,#

的单个出现

我应该做什么样的调整才能选择与我描述的模式匹配的出现?

2 个答案:

答案 0 :(得分:4)

由于字符串具有精确格式,因此正则表达式应为:

&#\d{5};

  • 这将精确匹配数字5次(不多,不少)。
  • 此外,您不需要字符类[],因为每个字符的位置都是严格的。
  • 您可以根据需要添加捕获组(&#\d{5};) - 如果没有,请将其删除。
  • 此外,如果您知道数据将始终采用您显示的格式,则不需要^$。如果添加^regex$,则正则表达式引擎必须执行2个额外步骤。这是一个微型化,但如果你正在处理大量数据,它可能会节省你一点时间。比较这两个例子中的步数:

enter image description here

enter image description here

一般情况下,使用正则表达式,您需要精确而具体。

答案 1 :(得分:3)

试试这个&#\d{5};

\ d {5}:任意数字,正好是5次重复

如果您想检测行尾,可以使用$^作为字符串起始位置。

感谢@xxxvodnikxxx