我想知道我可以使用什么样的正则表达式来提取所有在给定字符串中具有短划线的单词。我将使用它来允许用户从我的网站的搜索结果中省略某些单词。
例如,说我有
$str = "this is a search -test1 -test2";
我正在尝试将"test1"
和"test2"
保存到数组中,因为它们在前面有一个短划线。
任何人都可以帮我解决
答案 0 :(得分:3)
使用以下模式/\-(\w+)/
。例如:
$string = 'this is a search -test1 -test2';
$pattern = '/\-(\w+)/';
if(preg_match_all($pattern, $string, $matches)) {
$result = $matches[1];
}
var_dump($result);
输出:
array(2) {
[0] =>
string(5) "test1"
[1] =>
string(5) "test2"
}
说明:
/.../ delimiter chars
\- a dash (must be escaped as it has a special meaning in the regex language
(...) special capture group. stores the content between them in $matches[1]
\w+ At least one ore more word characters
答案 1 :(得分:2)
这样做:
<pre><?php
$string = 'Phileas Fog, Passe-Partout -time -day -@StrAn-_gE+*$Word²²²';
preg_match_all('~ -\K\S++~', $string, $results);
print_r($result);