在正则表达式搜索中包含无字母字符

时间:2015-09-25 17:29:27

标签: php regex

我有一个正常工作的正则表达式代码,但它不包括非字母字符。我怎么包括那些?

$text = "i have one treehouse. i'm the one. I have two cats.";
preg_match_all('/[\w\s]+?\bone\s?[\w\s]*?\./', $text, $array);

print_r($array);

预期结果

$array[0] = "i have one treehouse.";
$array[1] = "i'm the one";

实际结果

$array[0] = "i have one treehouse.";
$array[1] = "m the one"; <---cuts off at the single quote

我认为这是因为正则表达式代码不会查找像','这样的非字母字符?等等。我该如何包含这些?

1 个答案:

答案 0 :(得分:1)

您需要在角色类中加入'

\b[\w'\s]+?\bone\s?[\w\s]*?\.

DEMO

preg_match_all("~\b[\w'\s]+?\bone\s?[\w\s]*?\.~", $str, $matches);