如何通过将正则表达式中的分隔符加倍来转义分隔符
本文关键字:分隔符 转义 何通过 正则表达式 | 更新日期: 2023-09-27 18:07:50
我需要在分隔符上分割字符串,但不是在分隔符加倍的地方。
例如,"'m55.'m207|DEFAULT||DEFAULT|55||207"
一旦被分割就会产生
- ' m55。' m207
- 默认| |默认
- 55 | | 207年
我正试图用正则表达式来做这个。如果有区别的话,我用c# System.Text.RegularExpression.Regex
。
到目前为止,我有"[^|]'|[^|]"
,但这并不能处理转义分隔符旁边的分隔符。IE |||
我相信网上肯定有解决办法,但是我试着用多个不同的术语搜索,却找不到合适的术语组合来找到它。
如何通过在正则表达式中加倍分隔符来转义分隔符?或者如果有一个更简单的解决方案是什么?
编辑
下面是一个更复杂的例子:
输入:"' m55。' m207默认| | |默认| | | 55 | | 207"期望输出:
- ' m55。' m207" 默认
- "默认| | | |"
- "55 | | 207"
因为你的演示很简单,你只想用单个|
进行分割,所以我可以在这里使用'b
string txt = @"'m55.'m207|DEFAULT||DEFAULT|55||207";
string patten = @"'b'|'b";
foreach (var str in Regex.Split(txt, patten))
{
Console.WriteLine(str);
}
(?<=[^|](?:'|{2})+)'|(?!'|)|(?<!'|)'|(?!'|)
您需要使用lookarounds
来确保拆分只发生在一个|
上。
看到演示