如果两个逗号之间不存在good单词,找出这样的匹配字符串:
string s = string.Empty;
Regex regex = new Regex(@",(?![\s]*good\b)([\s\S]+?),", RegexOptions.IgnoreCase);
MatchCollection mc = regex.Matches("ss, good(dd,ee),dd,good(ff,gg)");
foreach (Match m in mc)
{
s = m.Groups[1].Value;
}
这样可以实现,与good之间是空白的字符串
但是如果字符串是ss,dd good(dd,ee),dd,good(ff,gg)
将正则改变为new Regex(@",(?![\s\S]*good\b)([\s\S]+?),", RegexOptions.IgnoreCase)
怎么找不到匹配的字符串啊还是上面的例子,仅仅是在环视中的匹配样式添加了括号,怎么匹配的是空字符串
Regex regex = new Regex(@",(?!([\s]*good\b))([\s\S]+?),", RegexOptions.IgnoreCase);
string s = string.Empty;
Regex regex = new Regex(@",(?![\s]*good\b)([\s\S]+?),", RegexOptions.IgnoreCase);
MatchCollection mc = regex.Matches("ss, good(dd,ee),dd,good(ff,gg)");
foreach (Match m in mc)
{
s = m.Groups[1].Value;
}
这样可以实现,与good之间是空白的字符串
但是如果字符串是ss,dd good(dd,ee),dd,good(ff,gg)
将正则改变为new Regex(@",(?![\s\S]*good\b)([\s\S]+?),", RegexOptions.IgnoreCase)
怎么找不到匹配的字符串啊还是上面的例子,仅仅是在环视中的匹配样式添加了括号,怎么匹配的是空字符串
Regex regex = new Regex(@",(?!([\s]*good\b))([\s\S]+?),", RegexOptions.IgnoreCase);
try
(?<=((?<!\([^)]*),|^)\s*)(?![^,]*?\bgood\b[^,]*?,)((?<o>\()|(?<-o>\))|[^,()]+)+(?(o)(?!))
我的要求仅仅是 匹配两个逗号之间不含good的字符串,你这个是得到什么
ss, good(dd,ee),dd,good(ff,gg)
从你Matches的方法调用,判断你需要的是逗号之间的,但是()中的逗号不算分隔符。我写大概就这意思。
ss, good(dd,ee),dd,good(ff,gg)
从你Matches的方法调用,判断你需要的是逗号之间的,但是()中的逗号不算分隔符。我写大概就这意思。
我要求得到的是:ss, good(dd,ee),dd,good(ff,gg)
(?<=,)(?![^,]*?\bgood\b)[^,]+(?=,)
Regex regex = new Regex(@"(?<=,)((?!good)[^,])+(?=,)");
MatchCollection mc = regex.Matches(test);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}