Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串C中正则表达式第n次匹配的索引#_C#_Regex - Fatal编程技术网

C# 字符串C中正则表达式第n次匹配的索引#

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

有人能帮我在下面的字符串中找到正则表达式的第5个匹配项(匹配项*不在双引号内)的索引吗

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}