我是 RegEx 的新手,所以我需要一些帮助。谁能帮我解析一个字符串并找到一个或多个范围从40000到99999的数字实例?以下是一些示例字符串:
- 订单详情,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
你可以尝试这样的事情:
(?<!\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
.
注意:我建议您始终在字符串的开头和结尾使用匹配来测试正则表达式。