C#中的正则表达式用字符串分割字符串,可以对其进行转义

时间:2013-09-20 07:18:48

标签: c# regex

我有一个问题,我有一个看起来像这样的字符串:

abc'def'ghi?'jkl'mno?'pqr'stu'vwx'yz'

我需要将这个字符串拆分为' char,但只有当没有问号站在它前面时,它才会逃脱'焦炭。除此之外,如果'转义我需要没有问号char的结果字符串。

结果应该是这个例子的一个List:

abc
def
ghi'jkl
mno'pqr
stu
vwx
yz

我希望你能帮我解决这个问题

亲切的问候

4 个答案:

答案 0 :(得分:2)

string[] output=Regex.Split(input,@"(?<!\?)'")
                     .Select(x=>x.Replace("?'","'"))
                     .ToArray();

答案 1 :(得分:1)

好吧,我会像这样一步一步地使用:

string str = @"abc'def'ghi?'jkl'mno?'pqr'stu'vwx'yz'";
string[] results = Regex.Split(str, @"(?<!\?)'");
var regex = new Regex(@"\?(?=')");
foreach (string result in results)
{
    string output = regex.Replace(result, "");
    Console.WriteLine(output);
}

答案 2 :(得分:0)

首先检查字符串是否包含问号将其替换为null,然后拆分字符串,如下所示。

string value = "abc'def'ghi?'jkl'mno?'pqr'stu'vwx'yz'";

if ( value.Contains("?"))
{
     value = value.Replace("?", null);
}

string[] splitedString = value.Split('\'');

答案 3 :(得分:0)

string value = "abc'def'ghi?'jkl'mno?'pqr'stu'vwx'yz'";

if ( value.Contains("?"))
{
     value = value.Replace("?", "");
}
value=value.Replace("'",Environment.NewLine);

enter image description here