我有一个正常工作的正则表达式代码,但它不包括非字母字符。我怎么包括那些?
$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
我认为这是因为正则表达式代码不会查找像','这样的非字母字符?等等。我该如何包含这些?
答案 0 :(得分:1)
您需要在角色类中加入'
。
\b[\w'\s]+?\bone\s?[\w\s]*?\.
preg_match_all("~\b[\w'\s]+?\bone\s?[\w\s]*?\.~", $str, $matches);