.NET正则表达式从混合字符值中提取1-4位数值

时间:2015-11-04 21:50:39

标签: .net regex string expression

我正在尝试为以下字符串完成.NET正则表达式:

  

示例1. abc1234abc - 1234
  示例2. abc12345abc - 无结果
  示例3. abc1234abc12345 - 1234

我正在尝试从任何混合字符值中提取1-4数字(1121231234)但不超过4位数(IE。不是12345)。

[0-9]{1,4}模式产生:

  

示例1. abc1234abc - 1234(好)
  示例2. abc12345abc - 1234,(应该不返回任何结果)
  示例3. abc1234abc12345 - 1234,1234,5(仅应返回1234)

我错过了什么?谢谢你的帮助,我对正则表达式非常新,我无法找到我想要的东西。我希望我的问题有道理。

1 个答案:

答案 0 :(得分:1)

您缺少可以检查数字是否包含更多数字的外观:

(?<!\d)\d{1,4}(?!\d)

或者(如果您只需要匹配常规数字,不包括印地语中的所有Uncide数字等):

(?<![0-9])[0-9]{1,4}(?![0-9])

请参阅regex demo

(?<!\d)是一个负面的后视图,用于检查下一个子模式是否前面没有其他子模式(在当前位置之前看,“看后面”),而(?!\d)是一个负向前瞻确保当前位置后没有数字(“向前看”)。 Lookarounds不消耗字符,它们只是检查然后返回true或false(因此允许或失败匹配),因此,您只能获得预期的匹配结果。

更多details on regex lookarounds at regular-expressions.info