1

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

  • 订单详情,Acme,#46405,53000,86232,4/17- 3 instances
  • PSA 订单详情:招聘实践 (46445);从 12 年 4 月 16 日开始- 1 instance
  • PC Pitstop 32134 Direct for 4/18/12- 0 instances
4

2 回答 2

4

你可以尝试这样的事情:

(?<!\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
于 2012-04-20T18:31:14.433 回答
3

你应该使用正则表达式

(?<!\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.


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

于 2012-04-20T18:21:53.823 回答