PHP中查找整词的正则表达式
我想要一个PHP代码,带有正则表达式,可以为任何匹配返回整词。例如,如果搜索PHP中查找整词的正则表达式,php,regex,Php,Regex,我想要一个PHP代码,带有正则表达式,可以为任何匹配返回整词。例如,如果搜索acI want,它将返回字符串中任何部分包含ac的所有单词。i、 e.如果字符串有facebook或act或face它会将所有单词返回给我,我编写了此代码,但工作不正常 $regx = "/\\b(\\S)*ac(\\S)*/iu"; foreach($values as $value) { echo $value."\n"; preg_match_all($regx
ac
I want,它将返回字符串中任何部分包含ac
的所有单词。i、 e.如果字符串有facebook
或act
或face
它会将所有单词返回给我,我编写了此代码,但工作不正常
$regx = "/\\b(\\S)*ac(\\S)*/iu";
foreach($values as $value)
{
echo $value."\n";
preg_match_all($regx, $value, $matches,PREG_PATTERN_ORDER);
var_dump($matches);
}
此正则表达式将返回字符串中包含“ac”的所有单词
$regx = "/\w*ac\w*/iu";
- \w*=>0个或更多字母
- ac=>ac
- \w*=>0个或更多字母
<?php
preg_match_all("/\w*ac\w*/iu", 'To be accurate, there are a lot of Stackoverflow accounts.', $matches);
print_r($matches);
?>
我认为这不是一个正则表达式任务!您可以使用检查成员资格的操作!它只有一个问题。在我的PHP代码中,它将每个单词返回2次。你对解决这个问题有什么想法吗?它第一次返回单词,第二次返回单词。您可以在下面的注释中看到var_dump的结果
array(2){[0]=>array(3){[0]=>string(7)“nachdem”[1]=>string(3)“ach”[2]=>string(8)“Feedback”}[1]=>array(3){[0]=>string(7)“nachdem”[1]=>string(3)“ach”[2]=>string(8)“Feedback”}
我删除了正则表达式中的括号。这解决了重复的问题。是的,现在它可以工作了。但是你能解释一下括号是什么作用导致了重复吗?$matches[0]
包含了整个正则表达式匹配的内容((\w*ac\w*)
)。$matches[1]
包含括号匹配的内容(\w*ac\w*
)。两者都提取了相同的信息,因此结果是重复的。更清楚地说:如果要提取与整个正则表达式匹配的内容,则不需要括号来选择要提取的特定部分。
Array
(
[0] => Array
(
[0] => accurate
[1] => Stackoverflow
[2] => accounts
)
)