繁体   English   中英

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

[英].NET regular expression to extract 1-4 digit value from mixed character value

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

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

我试图从任何混合字符值中提取 1-4 个数字( 1121231234 ),但不超过 4 位(即,不是12345 )。

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

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

我错过了什么? 谢谢你的帮助,我对正则表达式很陌生,我在任何地方都找不到我要找的东西。 我希望我的问题是有道理的。

您缺少将检查数字是否包含更多数字的环视:

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

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

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

正则表达式演示

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

有关正则表达式环视的更多详细信息,请访问regular-expressions.info

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM