.NET 正则表达式从混合字符值中提取 1-4 位值
.NET regular expression to extract 1-4 digit value from mixed character value
我正在尝试为以下字符串完成 .NET 正则表达式:
Example 1. abc1234abc - 1234
Example 2. abc12345abc - no results
Example 3. abc1234abc12345 - 1234
我正在尝试从任何混合字符值中提取 1-4 位数字(1
、12
、123
或 1234
),但不超过4 位数字(即。不是 12345
)。
[0-9]{1,4}
模式产生:
Example 1. abc1234abc - 1234 (good)
Example 2. abc12345abc - 1234, (should return no results)
Example 3. abc1234abc12345 - 1234, 1234, 5 (should return ONLY 1234)
我错过了什么?感谢您的帮助,我对正则表达式非常陌生,在任何地方都找不到我要找的东西。我希望我的问题是有道理的。
您缺少检查号码是否包含更多数字的环视方法:
(?<!\d)\d{1,4}(?!\d)
或者(如果您只需要匹配常规数字,不包括印地语等中的所有 Uncide 数字):
(?<![0-9])[0-9]{1,4}(?![0-9])
(?<!\d)
是一个负向后视,它检查下一个子模式之前是否没有其他子模式(在当前位置之前看,"looks behind"),(?!\d)
是一个负前瞻,确保当前位置后没有数字 ("looks ahead")。 Lookarounds 不消耗字符,它们只是检查然后 return true 或 false(因此允许或失败匹配),因此,您只会得到预期的匹配结果。
我正在尝试为以下字符串完成 .NET 正则表达式:
Example 1. abc1234abc - 1234
Example 2. abc12345abc - no results
Example 3. abc1234abc12345 - 1234
我正在尝试从任何混合字符值中提取 1-4 位数字(1
、12
、123
或 1234
),但不超过4 位数字(即。不是 12345
)。
[0-9]{1,4}
模式产生:
Example 1. abc1234abc - 1234 (good)
Example 2. abc12345abc - 1234, (should return no results)
Example 3. abc1234abc12345 - 1234, 1234, 5 (should return ONLY 1234)
我错过了什么?感谢您的帮助,我对正则表达式非常陌生,在任何地方都找不到我要找的东西。我希望我的问题是有道理的。
您缺少检查号码是否包含更多数字的环视方法:
(?<!\d)\d{1,4}(?!\d)
或者(如果您只需要匹配常规数字,不包括印地语等中的所有 Uncide 数字):
(?<![0-9])[0-9]{1,4}(?![0-9])
(?<!\d)
是一个负向后视,它检查下一个子模式之前是否没有其他子模式(在当前位置之前看,"looks behind"),(?!\d)
是一个负前瞻,确保当前位置后没有数字 ("looks ahead")。 Lookarounds 不消耗字符,它们只是检查然后 return true 或 false(因此允许或失败匹配),因此,您只会得到预期的匹配结果。