正则表达式 在给定范围内查找一个或多个 5 个连续数字的实例

本文关键字:连续 数字 实例 一个 范围内 查找 正则表达式 | 更新日期: 2023-09-27 18:31:44

我是正则表达式的新手,所以我需要一些帮助。 谁能帮我解析一个字符串并找到一个或多个范围从 4000099999 的数字实例? 下面是一些示例字符串:

  • 订单详情,Acme,#46405,53000,86232,4/17 - 3 instances
  • PSA 订单详细信息:招聘实践 (46445);开始 4-16-12 - 1 instance
  • PC 进站器 32134 直销 4/18/12 - 0 instances

正则表达式 在给定范围内查找一个或多个 5 个连续数字的实例

你可以尝试这样的事情:

(?<!'d)[4-9]'d{4}(?!'d)

在正则表达式上看到它

编辑:这是一个c#代码片段来测试它:

// could be whatever
var str = "50000 alpha 43 84100";
var regex = new Regex(@"(?<!'d)[4-9]'d{4}(?!'d)");
foreach (Match match in regex.Matches(str))
    Console.WriteLine(match.Value);

这将输出:

50000
84100

你应该使用正则表达式

(?<!'d)([4-9]'d{4})(?!'d)

未经测试的代码:

using System;
using System.Collections;
using System.Text.RegularExpressions;
class Program
{
  static void Main()
  {
    string input = "50000 Order Acme, #46405,53000,86232, for 4/17 60000";
    Regex t = new Regex(@"(?<!'d)([4-9]'d{4})(?!'d)", RegexOptions.Singleline) 
    MatchCollection theMatches = t.Matches(input) 
    for (int counter = 0; counter < theMatches.Count; counter++)
    {
      Console.WriteLine(theMatches[counter].Value); 
    }
  }
}

对于多行输入,请使用 RegexOptions.Multiline 而不是 RegexOptions.Singleline


注意:我建议您始终在字符串的开头和结尾使用匹配来测试正则表达式。