【问题标题】:Regex match only first occurrence after key string正则表达式仅匹配键字符串后的第一次出现
【发布时间】:2016-09-28 22:46:16
【问题描述】:

正则表达式:

(?<=KEY.{1,99})([0-9]*)

示例文本:

test 74488 hdhd2 768 788 KEY bla gjjjcrs 6448. gfudj778. 2 bla 77545 77890 7754

想要的结果:

6448

我只需要 KEY 之后的数字组的第一个匹配项。我可以让正则表达式在第一个数字组出现后停止搜索以减少 CPU 负载吗?还是我不需要?

【问题讨论】:

  • 如果您希望它停止搜索,只需使用if 条件..找不到所有匹配项..您也可以尝试.*?\bKEY\b.*?\b(\d+)\b

标签: .net regex


【解决方案1】:

你可能想试试这个:

KEY.*?(\d+)

演示here.

【讨论】:

  • 感谢那个演示,非常有用的网站。
  • @Fastbrainx 如果你想寻找解释,你可以在提供的链接中找到它。
  • @Veeke 很高兴听到这个消息。
【解决方案2】:

使用:(.*) (KEY) ([^0-9]*)(\d+)

Demo

如果您只想匹配 KEY 之后的那些数字:(?:.* KEY) (?:[^0-9]*)(\d+)

【讨论】:

  • 对不起,这不是我想要的。为我的问题添加了所需的结果。
  • (?:.* KEY) (?:[^0-9]*)(\d+)。谢谢,我的情况很好。
猜你喜欢
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 2011-01-02
  • 2021-12-07
  • 2012-11-17
  • 1970-01-01
相关资源
最近更新 更多