所以,我在c#regex中需要做的事情基本上是每当我找到一个特定的模式时分割一个字符串,但如果它被字符串中的双引号包围,则忽略该模式。捕捉一个模式,但在引号内忽略它
实施例:
string text = "abc , def , a\" , \"d , oioi";
string pattern = "[ \t]*,[ \t]*";
string[] result = Regex.Split(text, pattern, RegexOptions.ECMAScript);
求购结果后分裂(3个分割,4串):
{"abc",
"def",
"a\" , \"d",
"oioi"}
实际结果(4个分割,5个字符串):
{"abc",
"def",
"a\"",
"\"d",
"oioi"}
又如:
string text = "a%2% 6y % \"ad%t6%&\" %(7y) %";
string pattern = "%";
string[] result = Regex.Split(text, pattern, RegexOptions.ECMAScript);
求购结果后分裂(5个分割,6个字符串):
{"a",
"2",
" 6y ",
" \"ad%t6%&\" ",
"(7y) ",
""}
实际结果(7个拆分,8个字符串):
{"a",
"2",
" 6y ",
"\"ad",
"t6",
"&\" ",
"(7y) ",
""}
甲第三示例,以举例说明只有第一种情况应该被忽略的棘手问题:
string text = "!!\"!!\"!!\"";
string pattern = "!!";
string[] result = Regex.Split(text, pattern, RegexOptions.ECMAScript);
通缉结果拆分后(2分割,3串):
{"",
"\"!!\"",
"\""}
实际结果(3个分割,4串):
{"",
"\"",
"\"",
"\"",}
那么,我该怎么办从模式移动到一个新的模式,实现所需的结果?如果你打算把某人的问题标记为重复(并且我没有任何反对意见),至少将它们指向正确的答案,而不是一些随机的帖子(是的,我在看着你,阿维纳什拉吉先生)...
您是否删除了以前的曲estion? –
您已重新发布与[this one](http://stackoverflow.com/q/3147836/335858)的副本相同的问题。如果你认为你的问题是**而不是**这个问题的重复,请在问题的正文中解释它。 – dasblinkenlight
@AvinashRaj [是的,他确实](http://stackoverflow.com/q/32796029/335858)。 – dasblinkenlight