2015-09-25 143 views
-3

我有一個正常工作的正則表達式代碼,但它不包括非字母字符。我將如何包括這些?在正則表達式搜索中包含無字母字符

$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

您使用的字符組目前:'[\ W \ S]'。爲此,請添加您想包含的特殊字符:'[\ w \ s',!]' – OnlineCop

+0

等待。我以前看過類似的帖子,我認爲 – user5173426

+0

'[]'是一個字符類,列出你想要的字符。把你允許的角色放在裏面。 – chris85

回答

1

您需要包括'字符類裏面。

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

DEMO

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

你可以包含整個preg_match_all嗎?我在放置這部分代碼的地方遇到了麻煩。 – jessica

+0

檢查我的更新。 –

+0

如果句子以問號或感嘆號結尾,我需要它來匹配它。 – jessica

相關問題