当前位置: 首页 > 面试题库 >

正则表达式以匹配特定长度的数字

洪梓
2023-03-14
问题内容

我想匹配一个15位数字(作为较大的正则表达式字符串的一部分)。现在,我有

\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d

但我觉得必须有一种更清洁的方法来做到这一点。


问题答案:

如果您正则表达式语言是Perl兼容的:\d{15}

在不知道要使用此代码段的外部上下文的情况下,很难说出如何处理边缘(因此您不会意外地抓住多余的数字)。最终的上下文无关解决方案是这样的:

(?<!\d)\d{15}(?!\d)

您可以将其放在任何正则表达式的中间,它将匹配(并且仅匹配)一个精确的15位数字的序列。但是,这很尴尬,通常是不必要的。假设非字母数字边界(例如,数字周围的空格)的更简单版本是:

\b\d{15}\b

但是,如果字母紧接序列之前或之后将不起作用。



 类似资料:
  • 问题内容: 我想知道正则表达式可以匹配单词,以使单词具有最大长度。例如,如果一个单词的最大长度为10个字符,我希望正则表达式匹配,但是如果长度超过10个,则正则表达式不应匹配。 我试过了 但这仅在单词的最小长度为10个字符时才为我带来匹配。如果单词超过10个字符,它仍然匹配,但仅匹配前10个字符。 问题答案: 我想你要。该单词边界匹配。 当然,您也可以替换和。只要一个字符串的唯一内容,它将匹配最多

  • 问题内容: 我的代码: 输出: 我知道的 : “一个?” 代表零个或一次出现的字符“ a”。 Java API说: matcher.start()返回上一个匹配项的起始索引。 matcher.end()返回匹配的最后一个字符后的偏移量。 matcher.group()返回与上一个匹配项匹配的输入子序列。对于具有输入序列s的匹配器m,表达式m.group()和s.substring(m.start(

  • 问题内容: 我正在使用模块中的函数来匹配某些东西,并且一切正常。 现在,我需要找出我有多少场比赛。是否可以不两次遍历迭代器?(先找出计数然后是真正的迭代) 一些代码: 一切正常,我只需要在循环之前获取匹配数即可。 问题答案: 如果您知道需要所有匹配项,则可以使用该功能。它将返回所有匹配项的列表。然后,您可以只进行匹配次数。

  • 问题内容: 我想搭配以下 com.my.company。 moduleA .MyClassName com.my.company。 moduleB .MyClassName com.my.company。 anythingElse .MyClassName 但 不是 以下 com.my.company。 核心 .MyClassName 我当前的简单正则表达式模式是: 因此,基本上,我该如何匹配其他

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 我们得到了一些这样的内容: