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 为什么vim中的重复量词比指定的副本匹配*少*?_Regex_Vim - Fatal编程技术网

Regex 为什么vim中的重复量词比指定的副本匹配*少*?

Regex 为什么vim中的重复量词比指定的副本匹配*少*?,regex,vim,Regex,Vim,因此,我有一个这样的搜索:\v(\\us{-1,}[^]+){24}.(这是一个更大的正则表达式的一部分,但它应该基本上匹配句点之前的前24个单词。) 最后一句话是匹配的,肯定不是24个单词长。我做错了什么,在这里 作为参考,正在构造的整个正则表达式如下所示: \v(%^|\.)@<=(\_[^[:alnum:]]{-1,}[^ ]+){-1,} ... ((\_\s{-1,}([^ ]+)\_\s*(\(\_[^\)]*\d{4}\))?){24}\_\s*\.)@= 在Vi

因此,我有一个这样的搜索:
\v(\\us{-1,}[^]+){24}.
(这是一个更大的正则表达式的一部分,但它应该基本上匹配句点之前的前24个单词。)

最后一句话是匹配的,肯定不是24个单词长。我做错了什么,在这里

作为参考,正在构造的整个正则表达式如下所示:

\v(%^|\.)@<=(\_[^[:alnum:]]{-1,}[^ ]+){-1,} ...
    ((\_\s{-1,}([^ ]+)\_\s*(\(\_[^\)]*\d{4}\))?){24}\_\s*\.)@=

在Vim中,
\v(%^ |\)@即使在
\v
模式下,您不需要在某些
{n}
前面使用反斜杠吗?什么是
\s{-1,}
?这并不能直接帮助你解决问题,但作为一个一般性的建议,我想说,如果你的正则表达式开始变得比屏幕宽度大,我觉得也许是时候把问题分解成更小的部分(可能只是更小的正则表达式)…哦,@ruepsmoker,有六种更好的方法可以做到这一点(正如任何几乎涉及regexen的解决方案通常都是如此:P
);它最初是一种不明智的牦牛剃须……但是,据我所知,它应该是有效的。
/=
\v(%^|\.)@<=(\_[^[:alnum:]]{-1,}[^ ]+){-1,} ...
    ((\_\s{-1,}([^ ]+)\_\s*(\(\_[^\)]*\d{4}\))?){24}\_\s*\.)@=