Php 正则表达式匹配字符串
我有以下资料:Php 正则表达式匹配字符串,php,regex,Php,Regex,我有以下资料: <?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);
<?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]);
如何匹配其他单词
“hello”、“there”、“yo's”?
这些单词可以是任何字符串。您可以使用以下技巧:使用(*SKIP)(*F)
动词匹配您不想返回的内容并手动使匹配失败,然后匹配您需要的任何内容
下面是一个示例正则表达式:
(?:-\d+|"[^"]*")(*SKIP)(*F)|\S+
看
(?:-\d+|“[^”]*”
将被跳过,\S+
将匹配所有非空白字符序列
:
您可以使用explode、split或preg_split 分解使用固定字符串:
$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));
使用
\b
匹配单词边界。/\b(.*)\b/
?如果您只想将所有内容分开,您可以在空白处爆炸。@MarcB基本上匹配整个字符串。*?
是一种非贪婪匹配。@MarcB:但它确实匹配空字符串和非单词,因为它从单词的结尾一直匹配到下一个单词的乞讨(可以表示为\b\W*\b
)。
$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));