Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Regex 正则表达式不符合大括号中的值_Regex - Fatal编程技术网

Regex 正则表达式不符合大括号中的值

Regex 正则表达式不符合大括号中的值,regex,Regex,我在Notepad++v6.6.8中使用以下正则表达式 \n(".*?",){14}"" 它匹配应该匹配的行,但也匹配不应该匹配的行。例如,我不希望它与以下行匹配: "Sold","421","421","67","1/9/2007 12:00:00 AM","","3","","","","","","","","1/9/2007 12:00:00 AM","","","","True","4601","1/3/2011 5:44:17 PM","" 但是,它通过datetime的第二个匹

我在Notepad++v6.6.8中使用以下正则表达式

\n(".*?",){14}""
它匹配应该匹配的行,但也匹配不应该匹配的行。例如,我不希望它与以下行匹配:

"Sold","421","421","67","1/9/2007 12:00:00 AM","","3","","","","","","","","1/9/2007 12:00:00 AM","","","","True","4601","1/3/2011 5:44:17 PM",""

但是,它通过datetime的第二个匹配项进行匹配。出于好奇,我将大括号中的值更改为
15
,它返回了完全相同的匹配。有人能解释一下为什么会这样吗?我正在尝试快速计数CSV文件中第15个位置为空(
”)的每条记录,我认为结果与几千条记录相差。

模式第一部分的第14个实例与
”,“1/9/2007 12:00:00 AM”
匹配。仅仅因为匹配不是贪婪的,并不意味着它不会为了匹配而扩展

你可以试试类似的东西

\n("[^"]*",){14}""
或者使用^anchor,而不是匹配换行符

^("[^"]*",){14}""
据报道,它确实符合这条线。考虑到示例数据,我不完全清楚它应该匹配还是不应该匹配,但RegExBuddy同意这是一个匹配

有人能解释一下为什么会这样吗

我认为这是因为
(“*?”,)
——具体地说,你可以在没有任何内容的情况下匹配引号。这将允许根据量词计算任何引号

(“*?”,){14}“
进行贪婪匹配。这个
(“*?”,){14}
regex将匹配精确的14次出现,并且regex引擎还尝试匹配以下
模式。但是在第14次出现
“*?”之后没有
”,
在那个地方有一个字符串
“1/9/2007 12:00:00 AM”,
,它不是
,所以正则表达式引擎向上移动到下一个
”,
。一旦找到,它将匹配到该字符串以获得匹配


通过从模式中删除以下
来查看差异。还有。

谢谢你的解释。你对我如何检查第15个职位是否为空有什么建议吗?