gpt4 book ai didi

c# - 使用正则表达式匹配具有任意定界符的字段

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:15 24 4
gpt4 key购买 nike

我想这应该是个老问题了,但是我在论坛里找了几个小时都没有找到合适的解决方案。

我正在使用 C#,我知道 Regex.SplitString.Split 方法可用于实现预期结果。出于某种原因,我需要使用正则表达式通过指定任意分隔符来匹配所需的字段。例如,这里是字符串:

#DIV#This#DIV#is#DIV#"A  "#DIV#string#DIV#

这里,#DIV# 是分隔符,将拆分为:

This
is
"A "
string

如何使用正则表达式来匹配这些值?

顺便说一句,前导和尾随的#DIV#也可以忽略,例如,下面的源字符串也应该与上面的结果相同:

#DIV#This#DIV#is#DIV#"A  "#DIV#string

This#DIV#is#DIV#"A "#DIV#string#DIV#

This#DIV#is#DIV#"A "#DIV#string

最佳答案

更新:

我想我找到了一种方法(注意它效率不高!)用正则表达式去除空值。

var splits = Regex.Matches(strIn, @"(?<=#DIV#|^)(?:(?!#DIV#).)+?(?=$|#DIV#)");

参见 demo on regexstorm (注意\r?只是多行模式下的demo,实际使用时不需要)

原始答案

这是另一种使用常规 Split 的方法:

var strIn = "#DIV#This#DIV#is#DIV#\"A # \"#DIV#string#DIV#";
var splitText = strIn.Split(new[] {"#DIV#"}, StringSplitOptions.RemoveEmptyEntries);

否则,您可以使用正则表达式来匹配您需要的字段,然后使用 LINQ 删除空项:

var spltsTxt2 = Regex.Matches(strIn, @"(?<=#DIV#|^).*?(?=#DIV#|$)").Cast<Match>().Where(p => !string.IsNullOrEmpty(p.Value)).Select(p => p.Value).ToList();

输出:

enter image description here enter image description here

关于c# - 使用正则表达式匹配具有任意定界符的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30340407/

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