Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式C#-之前、之间和之后的所有内容[T]_C#_Regex_Parsing - Fatal编程技术网

正则表达式C#-之前、之间和之后的所有内容[T]

正则表达式C#-之前、之间和之后的所有内容[T],c#,regex,parsing,C#,Regex,Parsing,我有这个正则表达式 ([\s\S]*?)\[T\]([\s\S]*?)\[\/T\]([\s\s]*?) 它应该提取[T][\T]之前、之间和之后的所有内容,但我总是将第三个捕获组设置为空 我的文字是: <h1>HelloWorld</h1> [T] <h2>I'm Inside</h2 [/T] <h1>HelloWorld</h1> [T] <h2>I'm Inside</h2 [/T] <h3&

我有这个正则表达式

([\s\S]*?)\[T\]([\s\S]*?)\[\/T\]([\s\s]*?)
它应该提取
[T][\T]
之前、之间和之后的所有内容,但我总是将第三个捕获组设置为空

我的文字是:

<h1>HelloWorld</h1>
[T]
 <h2>I'm Inside</h2
[/T]
<h1>HelloWorld</h1>
[T]
 <h2>I'm Inside</h2
[/T]
<h3>By World</h3>

感谢您的帮助。

由于您的问题标题与实际输出示例不符,因此我的答案基于实际所需的输出

要获得所需的输出,您必须查看给定文本中的模式。您要捕获的文本是而不是始终介于[T][/T]之间。但是它总是在..m.Value)之间; StringBuilder=新的StringBuilder(); //构建字符串 foreach(结果中的var项目) { builder.Append(item).Append(“;”); } //删除最后添加的“ builder.Length=builder.Length-3; //生成器现在等于“HelloWorld;我在里面;按世界” 控制台写入线(生成器);
您能否(更具体地)指定所需的结果是什么?因为就我所见,这个正则表达式选择了除最后一行之外的所有内容(包括[T]和[T]标记)。准备好了,进行了编辑,是的,它非常简单。我想选择所有内容,包括发生错误的最后一行。您的问题不太清楚,因为您正在尝试捕获标记内的文本,并输出不带标记的文本-仅通过一次是不可能的
h2
标记没有用
关闭-这真的是您拥有的吗<代码>[\s\s]毫无意义,它等于
\s
。目前,我只能建议,请检查并更新。对不起,我的坏消息是\s\s
var template = @"    <h1>HelloWorld</h1>
    [T]
     <h2>I'm Inside</h2
    [/T]
    <h1>HelloWorld</h1>
    [T]
     <h2>I'm Inside</h2
    [/T]
    <h3>By World</h3>";

var regex = new Regex("([\s\S]*?)\[T\]([\s\S]*?)\[\/T\]([\s\s]*?)");
var finalString = regex.Replace(template,"$1 ; $2 ; $3");

// finalString = HelloWorld ; I'm Inside ; By World //
Regex reg = new Regex(@"(?<=\>).+?(?=\<)");

var matches = reg.Matches(content);

// get distinct result
var result = matches.Cast<Match>().Select(m => m.Value).Distinct().ToList();

StringBuilder builder = new StringBuilder();

// build the string
foreach (var item in result)
{
    builder.Append(item).Append(" ; ");
}

// remove last added " ; "
builder.Length = builder.Length - 3;

// builder now equals "HelloWorld ; I'm Inside ; By World"
Console.WriteLine(builder);