在regex中获得多个结果

时间:2018-01-04 09:56:48

标签: c# regex

我有以下字符串,我想通过开始和结束字符串拆分字符串,开始字符串是格式,结束字符串结束,所以

format_abc_endformat_def_endformat_ghi_end

结果必须为format_abc_end format_def_end format_ghi_end我正在尝试以下正则表达式:(?:^|\s)format_(.*?)_end(?:\s|$)似乎在this case中有效,但在{ {3}}它不像我想象的那样有效。

2 个答案:

答案 0 :(得分:1)

使用此正则表达式:

format_(.*?)_end

第二种情况不起作用的原因是: 你的第二个案例正则表达式:

(?:^|\s)format_(.*?)_end(?:\s|$)
  

字符串:format_abc_endformat_def_endformat_ghi_end

^ =寻找字符串的开头。这是一个连续的字符串,所以如果你添加它,它只会匹配一次 \s =查找空白字符。你的字符串中的空格在哪里?

答案 1 :(得分:0)

您可以使用此解决方案:):

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string strToProcess = "format_abc_endformat_def_endformat_ghi_end";
        char[] splitchar = { '@' };
       String[] Result =  strToProcess.Replace("_end", "@").Replace("format_", "@").Replace("@@", "@").Split(splitchar);
    }
}