Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Php 正则表达式后面的字符串_Php_Regex - Fatal编程技术网

Php 正则表达式后面的字符串

Php 正则表达式后面的字符串,php,regex,Php,Regex,我有一个正则表达式 $pattern = '/\b\d{4}-\d{4}\b/'; preg_match($pattern, $text, $matches); 我需要在正则表达式后面加上5个单词。你知道我该如何做到这一点吗 例如,“动力槽开槽制动盘-1997-1998 Oldsmobile Regency-制动器和制动片-制动盘。” 我需要返回“1997-1998奥兹莫比尔摄政-刹车&” 有什么想法吗 //从底部注释更新。 一个字符串中可能有多个匹配项。比如说 例如:“2000-2009年福

我有一个正则表达式

$pattern = '/\b\d{4}-\d{4}\b/';
preg_match($pattern, $text, $matches);
我需要在正则表达式后面加上5个单词。你知道我该如何做到这一点吗

例如,“动力槽开槽制动盘-1997-1998 Oldsmobile Regency-制动器和制动片-制动盘。”

我需要返回“1997-1998奥兹莫比尔摄政-刹车&”

有什么想法吗

//从底部注释更新。

一个字符串中可能有多个匹配项。比如说

例如:“2000-2009年福特探险家,2000-2010年福特Ranger。1674SJT JBA Cat4ward标题功能”

我仍在尝试获取数字序列xxxx xxxx后的前5个“非空格”

/\b\d{4}-\d{4}( [^ ]*){5}\b/
获得一个空格,后跟除空格(即单词)以外的任何内容,并执行5次


获取一个空格,后跟除空格(即单词)以外的任何内容。然后执行5次。

编辑后,请尝试以下操作:

/\b\d{4}-\d{4}(?:\s(?!\d{4}-\d{4})\S+){1,5}\b/


感谢@Ariel for the regex,这是基于的,在通过编辑指定其他要求之前,这是正确的。如果您喜欢这一点,也可以对答案进行投票;-)

在编辑之后,尝试以下操作:

/\b\d{4}-\d{4}(?:\s(?!\d{4}-\d{4})\S+){1,5}\b/


感谢@Ariel对正则表达式的支持,这是正确的,直到通过编辑指定了额外的要求。如果你喜欢这一点,也可以投票给这个答案;-)

这不是“后面的5个词”…这是“匹配和后面的5个词”,如果我们是学究(学究似乎是这里的一种爱好)
-
&
在技术上不是词…@DaveRandom学究气十足,你不得不说“-”和“&”从技术角度来看确实是词:-)@Dave,不幸的是,在计算方面,学究是有必要的。如果给你一个说明说“后面的5个词”“然后发现你提供的东西与他们之前的不一样,这会很烦人(但很不幸很常见!!)@arkascha
-
当然不是,如果翻译成口语形式,它代表了一种变化。当你考虑<代码> \W/COD>(Perl)单词时,它们都不是。这不是“5个单词之后”…这就是“比赛和5个单词后”加上如果我们是学究(学究似乎是我们的一种爱好)
-
&
从技术上来说不是单词…@DaveRandom学究式的你不得不说“-”和“&”从技术角度来看确实是单词:-)@Dave,不幸的是,当涉及到计算时,迂腐有点必要。如果你收到一份说明,上面写着“后面的5个单词”,然后发现你提供的东西与后面的不一样,那会很烦人(但不幸的是很常见!!)@arkascha
-
当然不是,如果翻译成口语形式,它代表一种变化。当你考虑<代码> \W/COD>(Perl)单词时,他们都不会。我建议<代码> <代码> >而不是<代码> <代码>——或者甚至<代码> \b>代码> @ DaveRandom,其中包含换行符,我不知道他是否想要。这似乎是有效的,除非它遵循类似的匹配。例如:“2000-2009年福特Explorer,2000-2010年福特Ranger.1674SJT JBA Cat4ward Headers功能”结果是:数组([0]=>2000-2009年福特Explorer,2000-[1]=>2000-)公平点。我不得不说,我从来都不明白为什么换行符是水平空格(
\h
)而不是垂直空格(
\v
)字符+1顺便说一句。@JasonSmall好吧,你把球门柱移了一点-你没有说可能有多个连续的比赛,这让比赛更有趣。它们总是用逗号分隔吗?你想提取的单词中会出现逗号吗?我建议使用
\s
,而不是
——或者甚至可能是
\b
@DaveRandom,其中包括新行,我不知道他是否想要。除非后面有类似的匹配,否则这似乎是可行的。例如:“2000-2009年福特Explorer,2000-2010年福特Ranger.1674SJT JBA Cat4ward Headers功能”结果是:数组([0]=>2000-2009年福特Explorer,2000-[1]=>2000-)公平点。我不得不说,我从来都不明白为什么换行符是水平空格(
\h
)而不是垂直空格(
\v
)字符+1顺便说一句。@JasonSmall好吧,你把球门柱移了一点-你没有说可能有多个连续的比赛,这让比赛更有趣。它们总是用逗号分隔吗?要提取的单词中是否会出现逗号?