如何用PHP正则表达式提取长尾词的中的子模式?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3444个文字,预计阅读时间需要14分钟。
正则表达式的一个关键特性是将匹配成功的模式的部分进行存储。使用这种模式,可以将匹配到的某部分内容存储起来,以便后续使用。对于正则表达式模式或部分模式,通过在两边添加圆括号(),可以将这部分内容存储到临时变量中,从而实现临时存储。
正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。对一个正则表达式模式或部分模式两边添加圆括号()可以把这部分表达式存储到一个临时缓冲区中。
所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容按顺序存储。
存储子匹配的缓冲区编号从1开始,连续编号至最大99个子表达式。
每个缓冲区都可以使用'\n'(或用'$n')访问,其中n为1至99的阿拉伯数字,用来按顺序标识特定缓冲区(子表达式)。
例1:最简单最有用的例子是确定文字中连续出现两个相同单词的位置
复制代码 代码如下:
<?php
$string = "Is is the cost of of gasoline going up up";
$pattern = "/\b([a-z]+) \\1\b/i"; //这里的\\1不能使用\$1或$1
$str = preg_replace($pattern, "\\1", $string); //这里的\\1可以使用\$1或$1,引用第一个子匹配
echo $str; //效果是Is the cost of gasoline going up
?>
例中的子表达式就是圆括号内的项。\b匹配单词的开始或结束。+匹配重复一次或更多次。
该子表达式匹配的是一个或多个字母字符的单词,即由'[a-z]+'匹配的。
本文共计3444个文字,预计阅读时间需要14分钟。
正则表达式的一个关键特性是将匹配成功的模式的部分进行存储。使用这种模式,可以将匹配到的某部分内容存储起来,以便后续使用。对于正则表达式模式或部分模式,通过在两边添加圆括号(),可以将这部分内容存储到临时变量中,从而实现临时存储。
正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。对一个正则表达式模式或部分模式两边添加圆括号()可以把这部分表达式存储到一个临时缓冲区中。
所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容按顺序存储。
存储子匹配的缓冲区编号从1开始,连续编号至最大99个子表达式。
每个缓冲区都可以使用'\n'(或用'$n')访问,其中n为1至99的阿拉伯数字,用来按顺序标识特定缓冲区(子表达式)。
例1:最简单最有用的例子是确定文字中连续出现两个相同单词的位置
复制代码 代码如下:
<?php
$string = "Is is the cost of of gasoline going up up";
$pattern = "/\b([a-z]+) \\1\b/i"; //这里的\\1不能使用\$1或$1
$str = preg_replace($pattern, "\\1", $string); //这里的\\1可以使用\$1或$1,引用第一个子匹配
echo $str; //效果是Is the cost of gasoline going up
?>
例中的子表达式就是圆括号内的项。\b匹配单词的开始或结束。+匹配重复一次或更多次。
该子表达式匹配的是一个或多个字母字符的单词,即由'[a-z]+'匹配的。

