匹配单词的PHP正则表达式
给定一个字符串,我需要一个包含单词的字符串数组,每个字符串前面都有任何非单词字符 输入字符串示例: array: one "two " (three ) -four -匹配单词的PHP正则表达式,php,regex,Php,Regex,给定一个字符串,我需要一个包含单词的字符串数组,每个字符串前面都有任何非单词字符 输入字符串示例: array: one "two " (three ) -four - 1“2”(3)-4- 字符串中的单词可以是任意数量的标点符号或符号,甚至是胡言乱语 我想看到的: array: one "two " (three ) -four - 数组: 一 “两个 “(三 )-四个 - 基本上,对于每一场比赛,最后一件事是一个单词,前面是上一场比赛遗留下来的任何东西 我将在PHP中使用它。我尝试了pr
1“2”(3)-4-
字符串中的单词可以是任意数量的标点符号或符号,甚至是胡言乱语
我想看到的:
array:
one
"two
" (three
) -four
-
数组:
一
“两个
“(三
)-四个
-
基本上,对于每一场比赛,最后一件事是一个单词,前面是上一场比赛遗留下来的任何东西
我将在PHP中使用它。我尝试了preg_match_all()和preg_split()的各种组合,其中的模式包含“\w”、“\b”、“[^\w]”等多种变体
大局
如何在字符串中的每个单词后面放置*以进行搜索?您可以使用负前瞻来分割单词边界,如下所示:
$array = preg_split( '/(?!\w)\b/', 'one "two" (three) -four-');
Aprint\u r($array)代码>所需的精确输出:
Array
(
[0] => one
[1] => "two
[2] => " (three
[3] => ) -four
[4] => -
)
排列
(
[0]=>一个
[1] =>“两个
[2] =>“(三
[3] =>)-4个
[4] => -
) 下面是一个如何在PHP中查找带有正则表达式的单词的示例
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject, 3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
如果您只想在每个“单词”后添加星号,可以执行以下操作:
<?php
$test = 'one "two" (three) -four-';
echo preg_replace('/(\w+)/', "$1*", $test);
?>
另一种选择
[^\w]*(\b\w*\b)?
----- ----------
| |
||->匹配一个单词0或1次
|->将0匹配到除[a-zA-Z0-9]之外的许多字符
你需要匹配 在你的“我想看的部分”中,four
之后的引号应该在下一行吗?你是对的,这些引号在我发布时似乎被修改了,我现在已经修复了,希望他们这次能正确通过。这也非常有效!我可能会使用这个,因为它避免了我随后在比赛中循环。