我正在尝试为以下字符串完成.NET正则表达式:
示例1. abc1234abc - 1234
示例2. abc12345abc - 无结果
示例3. abc1234abc12345 - 1234
我正在尝试从任何混合字符值中提取1-4数字(1
,12
,123
或1234
)但不超过4位数(IE。不是12345
)。
[0-9]{1,4}
模式产生:
示例1. abc1234abc - 1234(好)
示例2. abc12345abc - 1234,(应该不返回任何结果)
示例3. abc1234abc12345 - 1234,1234,5(仅应返回1234)
我错过了什么?谢谢你的帮助,我对正则表达式非常新,我无法找到我想要的东西。我希望我的问题有道理。
答案 0 :(得分:1)
您缺少可以检查数字是否包含更多数字的外观:
(?<!\d)\d{1,4}(?!\d)
或者(如果您只需要匹配常规数字,不包括印地语中的所有Uncide数字等):
(?<![0-9])[0-9]{1,4}(?![0-9])
请参阅regex demo
(?<!\d)
是一个负面的后视图,用于检查下一个子模式是否前面没有其他子模式(在当前位置之前看,“看后面”),而(?!\d)
是一个负向前瞻确保当前位置后没有数字(“向前看”)。 Lookarounds不消耗字符,它们只是检查然后返回true或false(因此允许或失败匹配),因此,您只能获得预期的匹配结果。