【问题标题】:Regex to match first number only if the string starts with 3 numbers in a row仅当字符串以连续 3 个数字开头时,正则表达式才匹配第一个数字
【发布时间】:2017-04-03 22:30:33
【问题描述】:

我必须创建一个正则表达式,仅当字符串开头连续有 3 个数字时才选择第一个数字。

例子:

012 test

这里我想匹配字符串开头的0。

02 test

这里我不希望正则表达式匹配任何内容。

我不知道如何在不使用正则表达式匹配的情况下检查字符串。这可能吗?

【问题讨论】:

  • 使用lookahead
  • 您可以使用:^(\d)(?=\d{2}\b)
  • 谢谢@anubhava,工作完美。
  • @Sebastian Proske,从未听说过这些前瞻,我想我会花一些时间来了解更多关于它们的信息。

标签: java regex


【解决方案1】:

使用positive lookahead assertion 检查后面的两位数字,使用start anchor(^) 从字符串的开头开始。

/^\d(?=\d{2})/


更新:您可以使用word boundary(\b) 来避免在两位数之后的任何单词字符之后匹配。
/^\d(?=\d{2}\b)/

【讨论】:

  • 谢谢!完美运行!
  • 当字符串为123xyz时,这也将匹配您应该在前瞻中添加单词边界
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2022-10-01
  • 2014-08-29
相关资源
最近更新 更多