繁体   English   中英

正则表达式匹配字符串词

[英]Regex match string words

我有以下内容:

<?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"? 这些可以是任何字符串词。

您可以使用以下技术:匹配不希望返回的内容,并使用(*SKIP)(*F)动词手动使匹配失败,然后匹配所需的内容。

这是一个示例正则表达式:

(?:-\d+|"[^"]*")(*SKIP)(*F)|\S+

观看演示

(?:-\\d+|"[^"]*")将被跳过, \\S+将匹配所有非空白字符序列。

IDEONE演示

$re = '/(?:-\d+|"[^"]*")(*SKIP)(*F)|\S+/'; 
$str = "hello there yo\'s -3 \"hey\""; 
preg_match_all($re, $str, $matches);
print_r($matches);

您可以使用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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM