php - 使用正则表达式提取两个单词之间的单词

标签 php regex preg-match

我有一个字符串:

8 nights you doodle poodle

我希望检索 nightspoodle 之间的所有东西,所以在上面的例子中,输出应该是 you doodle

我正在使用下面的正则表达式。请有人指出我可能做错了什么?

if (preg_match("nights\s(.*)\spoodle", "8 nights you doodle poodle", $matches1)) {
    echo $matches1[0]."<br />"; 
}

最佳答案

您很接近,但您访问的是 $matches1 上的错误索引。 $matches1[0] 将返回在 preg_match() 中匹配的字符串;

尝试$matches1[1]

此外,您需要将正则表达式括在 / 字符中;

if (preg_match("/nights\s(.*)\spoodle/", "8 nights you doodle poodle", $matches1)) {
    echo $matches1[1]."<br />"; 
}

输出

you doodle<br />

关于php - 使用正则表达式提取两个单词之间的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073849/

相关文章:

regex - 如何仅从特定位置删除字符串中的分隔符?

php - 使用 preg_match 检测字符串中的波斯语 (farsi) 字符

regex - 使用正则表达式搜索文件名

php 回显 javascript 调用

PHP - 将 mysql 时间戳转换为显示网格

ffmpeg - 如何安装和运行 phpize

iphone - 如何在 iPhone 应用程序中使用正则表达式以 , (逗号)分隔字符串

php - 任何更快、更简单的 php preg_match 替代品

php - YouTube网址的preg_match正则表达式部分失败

php - 巴黎 PHP 中的 MySQL 查询不同