Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Syntax - Fatal编程技术网

Regex 如何指定正则表达式模式的重复次数

Regex 如何指定正则表达式模式的重复次数,regex,syntax,Regex,Syntax,我有一句话,例如: .+?\s+.+?\s+.+?\s+.+?\s+.+?am.+?\s+.+?\s+.+?\s+.+?\s+.+?\s+ 我们的祖先是谁?我们的祖先是谁 在这个句子中,我想在句子的中间匹配“AM”这个词。但是,我还想在这个单词前后匹配5个单词。我这样做的正则表达式如下: .+?\s+.+?\s+.+?\s+.+?\s+.+?am.+?\s+.+?\s+.+?\s+.+?\s+.+?\s+ 但这看起来相当笨拙。我的问题是,是否有办法指定.+?\s+部分的重复次数。有人能帮我吗

我有一句话,例如:

.+?\s+.+?\s+.+?\s+.+?\s+.+?am.+?\s+.+?\s+.+?\s+.+?\s+.+?\s+
我们的祖先是谁?我们的祖先是谁

在这个句子中,我想在句子的中间匹配“AM”这个词。但是,我还想在这个单词前后匹配5个单词。我这样做的正则表达式如下:

.+?\s+.+?\s+.+?\s+.+?\s+.+?am.+?\s+.+?\s+.+?\s+.+?\s+.+?\s+

但这看起来相当笨拙。我的问题是,是否有办法指定.+?\s+部分的重复次数。有人能帮我吗?为此,我使用PHP。

使用大括号:

a{2}   // two a's
a{1,}  // one or more a's
a{1,3} // between 1 and 3 a's
对复杂模式使用括号:

(foo){2,3} // two or three foo's

请使用大括号:

a{2}   // two a's
a{1,}  // one or more a's
a{1,3} // between 1 and 3 a's
对复杂模式使用括号:

(foo){2,3} // two or three foo's
{}重复最后一项的次数。所以\s++?{3}等价于\s++?\s++?\s++

因此您将使用.+?\s+{5}am.+?\s+{5}

{}重复最后一项的次数。所以\s++?{3}等价于\s++?\s++?\s++


所以你会用+?\s++{5}am.+?\s++{5}

你用的是什么编码语言?我试着在PHP程序中这样做你用的是什么编码语言?我试着在PHP程序中这样做括号是我弄错的部分,谢谢。括号是我弄错的部分,谢谢。