", String.Empty).Trim().ToCharA-6ren">
gpt4 book ai didi

c# - 如何使用正则表达式在 以及 和 之间创建任何内容的数组?

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:46 26 4
gpt4 key购买 nike

我有代码将这个字符串解析成一个字符数组:

var textArray = Regex.Replace(text, @"</?span( [^>]*|/)?>",    
String.Empty).Trim().ToCharArray();

<span>そ</span><span>れ</span><span>に</span><span>も</span>拘<span>わ</span><span>ら</span>もも<span>ず</span>

但现在我需要做一些不同的事情,但我不确定该怎么做。我需要的是将这样的字符串解析为这样的数组:








もも

<span> 之间的任何内容和 </span>是数组中的一个元素,也是 </span> 之间的任何元素和 <span> .

如果有人能就我如何使用 Regex 来执行此操作提供任何建议,我将不胜感激:

最佳答案

你可以使用

var textArray = Regex.Split(text, @"(?:</?span(?:\s+[^>]*)?>)+")
.Where(x => !string.IsNullOrEmpty(x));

Regex.Split方法将通过匹配的字符串出现将字符串分成 block 。如果匹配发生在字符串边界,空项将添加到结果中,因此您需要使用 .Where(x => !string.IsNullOrEmpty(x)) .

正则表达式匹配 1 次或多次出现

  • < - <字符
  • /? - 一个可选的 /
  • span - span正文
  • (?:\s+[^>]*)? - 一个可选的 1+ 空格序列,然后是除 > 之外的 0 个或更多字符
  • > - 一个 >字符。

参见 regex demo

非捕获组 ( (?:...) ) 与 Regex.Split 一样重要还将所有捕获的子字符串添加到结果中。

或者,如果您只想抓取 span 之间的所有文本打开/关闭标签:

var textArray = Regex.Matches(text, @"(?s)<span(?:\s+[^>]*)?>(.*?)</span>")
.Cast<Match>()
.Select(x => x.Groups[1].Value);

参见 C# demo .

在这里,<span(?:\s+[^>]*)?>火柴span和标签的所有内部部分,以及(.*?)捕获内部文本和 </span>匹配关闭标签。

关于c# - 如何使用正则表达式在 <span> 和 </span> 以及 </span> 和 <span> 之间创建任何内容的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58684576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com