C# 字符串C中正则表达式第n次匹配的索引#
有人能帮我在下面的字符串中找到正则表达式的第5个匹配项(匹配项*不在双引号内)的索引吗C# 字符串C中正则表达式第n次匹配的索引#,c#,regex,C#,Regex,有人能帮我在下面的字符串中找到正则表达式的第5个匹配项(匹配项*不在双引号内)的索引吗 ABC*DEF*PQR*"LMN*ABC"*XYZ*MNO*ABC*XYZ i、 e.25(就在MNO之前) 请使用C代码帮助在控制台输出上写入值25 我使用了正则表达式:\*(?=([^”]*“[^”]*”*[^”]*”*[^”]*$) 谢谢!下面是一个可以解决此问题的正则表达式。唯一的限制是,如果在字符串中输入的双引号多于当前双引号,将导致灾难性的回溯 string text = "ABC*DEF*PQ
ABC*DEF*PQR*"LMN*ABC"*XYZ*MNO*ABC*XYZ
i、 e.25(就在MNO之前)
请使用C代码帮助在控制台输出上写入值25
我使用了正则表达式:\*(?=([^”]*“[^”]*”*[^”]*”*[^”]*$)
谢谢!下面是一个可以解决此问题的正则表达式。唯一的限制是,如果在字符串中输入的双引号多于当前双引号,将导致灾难性的回溯
string text = "ABC*DEF*PQR*\"LMN* ABC\"*XYZ*MNO*ABC*XYZ";
string pattern = "\\*(?=([^\"]*\"[^\"]*\")*[^\"]*$)";
var matches = Regex.Matches(text, pattern);
Console.WriteLine(matches[4].Index); // indexing from 0, so 4, not 5
你想达到什么目的?你使用的正则表达式效率很低,从长远来看可能会导致问题。我只在谷歌上搜索了正则表达式,你能推荐一个有效的正则表达式吗?是否有多个双引号,如
abc“abc”nncknfjsk“sjnfsn”
?不,双引号只是文本限定符。你可以检查
(?:(?:(?:[^*"]*)(?:"[^"]*")*)*(\*)){5}