正则表达式,用于匹配由任意数量的单词组成的任意长度的字符串,其最后一个单词总是Child(1到10之间的整数)

本文关键字:Child 单词总 最后一个 整数 之间 用于 任意数 正则表达式 任意长 单词组 字符串 | 更新日期: 2023-09-27 18:18:28

我正在寻找一个正则表达式,它允许我过滤由任意数量的单词组成的字符串列表,其最后一个单词的最后一个字符必须小于或等于给定的整数。列表中每个目标字符串的最后一个单词总是Child<1到10>。例如:

List<string> attributes = new List<string>
{
     "First Name of Child1",
     "Last Name of Child1",
     "Age of Child1",
     "Shipping Instructions",
     "First Name of Child2",
     "Last Name of Child2",
     "Age of Child2",
     "Non-Profit Name",
     "First Name of Child3",
     "Last Name of Child3",
     "Age of Child3",
}

如果目标整数为2,则过滤列表将包含:

 "First Name of Child1",
 "Last Name of Child1",
 "Age of Child1",
 "First Name of Child2",
 "Last Name of Child2",
 "Age of Child2"

正则表达式,用于匹配由任意数量的单词组成的任意长度的字符串,其最后一个单词总是Child(1到10之间的整数)

var regex=new Regex(string.Join("|",Enumerable.Range(0,n).Select(i=>"Child"+i+"$")));

试试这个:

int selected = 2;
string exp = "Child(?<number>''d{1,2})$";
Regex rg = new Regex(exp);
var result = attributes.Where(a =>
{
    int i;
    string target = rg.Match(a).Groups["number"].Value;
    if (!int.TryParse(target, out i))
        return false;
    return (i <= selected);
});

由于我对正则表达式数字"范围"处理的理解不佳而编辑的代码。