繁体   English   中英

如何从正则表达式获取匹配的字符串? [C#]

[英]How to get matched string from Regex? [C#]

我有以下代码:

private void button_borrow_Click(object sender, EventArgs e)
    {
        Regex filter = new Regex(@"[0-9]*");
        String items = "";
        var selectedItems = checkedListBox_bookview.CheckedItems;
        foreach (var item in selectedItems)
        {

        }
        MessageBox.Show(items.ToString() + " Were selected: " + selectedItems.Count);
    }

我想从filter获取匹配的字符串。 我该怎么办?

使用Regex.IsMatch方法检查正则表达式是否在输入字符串中找到匹配项。 例如

    foreach (var item in selectedItems)
    {
         if (filter.IsMatch(item.ToString())
             // matched
    }

顺便说一句,请记住[0-9]*将匹配任何内容,因为您不需要在输入字符串中输入任何数字。 可能您需要^\\d+$

更新:获取匹配的号码:

Regex filter = new Regex(@"(\d+)");

foreach (var item in checkedListBox1.CheckedItems)
{
    var match = filter.Match(item.ToString());
    if (match.Success)
    {
        MessageBox.Show(match.Value);
    }    
}

要查找所有匹配项,您需要使用.Matches()并迭代返回的集合。

另一个好的做法是编译正则表达式,这样就不会在每次执行时都对性能造成影响,而是将其分配给类中的静态字段并使用“ RegexOptions.Compiled”。

这是一个小示例,可以轻松对其进行修改以支持您的方案:

class Program {
    private static Regex _filterRegex = new Regex(@"[0-9]+", RegexOptions.Compiled);

    static void Main(string[] args) {
      foreach (Match match in _filterRegex.Matches("1,2,3,4,5,6")) {
        Console.WriteLine("Match: " + match.Value);
      }
    }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM