我正在尝试创建一个表达式,从给定的字符串输入中提取大于125的字符串.
var input = "YH300s, H900H, 234, 90.5, +12D, 48E, R180S, 190A, 350A, J380S";
Run Code Online (Sandbox Code Playgroud)
请查看链接以进一步参考我的脚本/数据示例.
这是我当前的表达式尝试(*):
Regex.Matches(input,@"(?!.*\..*)[^\s\,]*([2-5][\d]{2,})[^\s\,]*"))
Run Code Online (Sandbox Code Playgroud)
从上面的表达式来看,唯一的输出是350A, J380S.
但是我想从输入字符串中提取以下输出(请参阅上面的链接以获得进一步的参考):
YH300s, H900H, R180S, 190A, 350A, J380S
Run Code Online (Sandbox Code Playgroud)
关于我可能出错的地方的任何进一步指南将非常感谢.如果我的上下文不清楚,请提前道歉,因为我仍然是写正则表达式的新手.
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
// an example of input
var input = "YH300s, H900H, 234, 90.5, +12D, 48E, R180S, 190A, 350A, J380S";
var parts = input.Split(new[]{", "}, StringSplitOptions.RemoveEmptyEntries);
// regex for numbers (including negative and floating-point)
var regex = new Regex(@"[-]?[\d]?[\.]?[\d]+");
foreach(var part in parts)
{
// there can be many matches, e.g. "A100B1111" => "100" and "1111"
foreach(Match m in regex.Matches(part))
{
if (double.Parse(m.Value) > 125)
{
Console.WriteLine(part);
break;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出
YH300s
H900H
234
R180S
190A
350A
J380S
Run Code Online (Sandbox Code Playgroud)