C#正则表达式提取字符串多次出现之间的值

时间:2019-07-18 22:18:23

标签: c# regex

我有这样的文字

  

#-cmd1-#Hakona Matata#-cmd2-#

我想获取所有类似于#-TEXT-#

的值

这是我使用的代码,但仅在出现一次的情况下有效

var text = "#-adsfree-# hakona matata #-adsbottom-#";

Regex regex = new Regex("#-(.*)-#");
var v = regex.Match(text);
string s = v.Groups[1].ToString();

1 个答案:

答案 0 :(得分:1)

我猜您可能正在设计一个表达式,也许类似于:

(?<=#-)\b(\w+)\b(?=-#)

测试

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"(?<=#-)\b(\w+)\b(?=-#)";
        string input = @"#-adsfree-# hakona matata #-adsbottom-#";
        RegexOptions options = RegexOptions.Multiline;

        foreach (Match m in Regex.Matches(input, pattern, options))
        {
            Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
        }
    }
}

如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。