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

时间:2016-05-17 07:28:57

标签: regex vb.net split

我希望在dBContext字符存在的情况下拆分字符串,除非前面有一个问号(') - 在这种情况下我不要想要分手 这样做的最佳方式是什么?
我这样分裂(如果分隔符是Char):

?'

如果它是一个字符串:

message.Split(New Char() {"'"C}) 

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

1 个答案:

答案 0 :(得分:5)

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

Regex.Split(message, "(?<!\?)'")

请参阅regex demo

如果文字(?<!\?)出现在单撇号的左侧,则?否定后瞻会使匹配失败。

在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

enter image description here