用"'"拆分字符串但不是"?" "

Ras*_*sen 4 regex vb.net split

我想将一个字符串分解等.无论该'字符的情况下,除非有在它前面一个问号(?') -在这种情况下,我希望分裂.
这样做的最佳方法是什么?
我这样分裂(如果分隔符是Char):

message.Split(New Char() {"'"C}) 
Run Code Online (Sandbox Code Playgroud)

如果它是一个字符串:

message.Split(New String() {"break"}, StringSplitOptions.None)  
Run Code Online (Sandbox Code Playgroud)

然后,我是否必须测试给定数组中的每个项目以查看它是否以?char 结尾,然后再次连接字符串 - 这似乎不是最佳解决方案..?
你必须做一个正则表达式,你会如何在vb.net中做到这一点?

Wik*_*żew 5

你需要Regex.Split一个(?<!\?)'正则表达式:

Regex.Split(message, "(?<!\?)'")
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

(?<!\?)如果一个文字负回顾后会失败的比赛?正好出现在单引号的左侧.

在VB.NET中,您可以使用Linq删除使用此正则表达式拆分获得的任何空字符串:

Dim message As String = "'sss?'ss'"
Dim my_result() As String = Regex.Split(message, "(?<!\?)'") _
        .Where(Function(strn As String) String.IsNullOrWhiteSpace(strn) = False) _
        .ToArray()
Console.WriteLine(String.Join(", ", my_result))
' => sss?'ss
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 谢啦!这正是我想要的. (2认同)