当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式[duplicate]只匹配第一个和最后4个数字

戚澄邈
2023-03-14

所以我想用正则表达式匹配第一个数字和最后四个数字。

我可以使用\d(?=\d{4})获取最后4个数字,但无法将第一个和最后四个数字合并在一起。尝试了多种组合。

共有1个答案

桂杰
2023-03-14

带有数字和其他字符的字符串

^.*?(\d).*(\d).*?(\d).*?(\d).*?(\d).*?$

请看演示

捕获字符串中的第一个数字,然后捕获最后4个数字(都是单独的,允许中间有任何字符)。

分解:

  • ^.* -懒惰地匹配所有内容
  • (\d)-直到遇到并捕获第一个数字
  • * -贪婪地匹配所有内容
  • (\d)。*?(\d)。*?(\d)。*?(\d)。*$ -直到它遇到最后4个数字,中间有任何东西,只捕获数字。($用于字符串结尾)

只是数字

相反,如果您只想用数字捕捉这些内容:

^(\d)\d+(\d{4})$

请看演示

 类似资料:
  • 我试图使用正则表达式来检查字符串中的第一个和最后一个字符是否是a-z之间的字母字符。 我知道这与第一个字符匹配: 但是我如何检查最后一个字符呢? 这: 不起作用。我怀疑这两个条款之间应该有什么区别,但我不知道是什么!

  • 问题内容: 我想匹配字符串中最后一次出现的简单模式,例如 但是,如果字符串 很 长,则会生成大量匹配项。有没有更直接的方法来匹配第二次出现的“ AAAA”,还是应该使用此替代方法? 问题答案: 您可以使用表示行末字符: 另外,请注意,这是变量的坏名称,因为它隐藏了内置类型。要访问列表的最后一个元素,您可以使用index:

  • 我有一个正则表达式,它应该将< code>[img]foo.bar[/img]重写为< code > 一个可行的例子是https://www.regex101.com/r/mJ9sM0/1

  • 根据下面的示例,我有一个正则表达式模式。 但是,作为一个一次性的派生,如果只有一个模式(匹配第一个实例的空白行&模式上方的一个空格),我可以让下面的内容匹配。 http://regex101.com/r/ey0ic7 但是,如果模式位于第一行,则没有匹配。

  • 问题内容: 如何匹配“ Hello world”或“ Hello World”形式的句子。该句子可能包含“-/数字0-9”。任何信息对我都会非常有帮助。谢谢。 问题答案: 这将做得很好。我对句子的定义:句子以非空格开头,以句点,感叹号或问号(或字符串结尾)结尾。标点符号后可能会有一个结束语。 这是输出: 正确地匹配所有这些(最后一个句子没有结尾标点符号),看起来似乎并不那么容易!

  • 我有一根这样的绳子 余额:“5048543747”,余额:“5119341413”,帐号:“0001000918”, 我使用了REGEX (.*?), 结果我收到的第一个子字符串是 余额:“5048543747” 实际上,我想要得到的结果是数组包括 { 余额:“5048543747” Baldefovd:“5119341413” 账号:“0001000918” } 有人能帮我吗。多谢。 编辑 我使