我有以下内容:
<?php
$searchExpression = 'hello there yo\'s -3 "hey"';
preg_match_all("/\"([^\]]*)\"/", $searchExpression, $exact_words);
var_dump($exact_words[1]);
echo '<br><br>';
preg_match_all("/(-\d+)/", $searchExpression, $blabla);
var_dump($blabla[1]);
这些匹配
-3
"hey"
如何匹配其他单词"hello", "there", "yo's"?
这些单词可以是任何字符串单词。
答案 0 :(得分:1)
您可以使用以下技巧:匹配您不想返回的内容,并使用(*SKIP)(*F)
动词手动将匹配失败,然后匹配您需要的任何内容。
这是一个示例正则表达式:
(?:-\d+|"[^"]*")(*SKIP)(*F)|\S+
请参阅demo
将跳过(?:-\d+|"[^"]*")
,\S+
将匹配所有非空白字符序列。
$re = '/(?:-\d+|"[^"]*")(*SKIP)(*F)|\S+/';
$str = "hello there yo\'s -3 \"hey\"";
preg_match_all($re, $str, $matches);
print_r($matches);
答案 1 :(得分:0)
您可以使用explode,split或preg_split。
explode使用固定字符串:
$parts = explode(' ', $string);
虽然split和preg_split使用正则表达式:
$parts = split(' +', $string);
$parts = preg_split('/ +/', $string);
基于正则表达式的拆分很有用的示例:
$string = 'hello there yo\'s -3 "hey"';
var_dump(explode(' ', $string));
var_dump(split(' +', $string));
var_dump(preg_split('/ +/', $string));