如何通过将正则表达式中的分隔符加倍来转义分隔符

本文关键字:分隔符 转义 何通过 正则表达式 | 更新日期: 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来确保拆分只发生在一个|上。

看到演示