Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式匹配字符串_Php_Regex - Fatal编程技术网

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));