给定一个字符串,我想要一个包含单词的字符串数组,每个字符串前面都有任何非单词字符。
输入字符串示例:
第一个月
字符串中的单词可以是任何东西,甚至是乱码,带有任意数量的标点符号或符号。
我希望看到的:
array:
one
"two
" (three
) -four
-
字符串
本质上,对于每个匹配,最后一个是一个单词,前面是前一个匹配剩下的任何东西。
我将在PHP中使用它。我已经尝试了preg_match_all()和preg_split()的各种组合,其中包含“\w”,“\b”,“[^\w]”等许多变体。
大图
如何在字符串中的每个单词后面放置 * 以进行搜索?
5条答案
按热度按时间3okqufwl1#
如果你只是想在每个“单词”后面添加一个星号,你可以这样做:
字符串
http://phpfiddle.org/main/code/8nr-bpb
cqoc49vn2#
你可以使用负的lookahead来分割单词边界,就像这样:
字符串
A
print_r( $array);
gives you所需的精确输出:型
vyu0f0g13#
“* 如何在字符串中的每个单词后面放置 * 以进行搜索?*”
你不需要捕获任何东西或使用反向引用。匹配一个或多个单词字符,然后忘记你与
\K
匹配的内容。零宽度位置是你注入星号的地方。产品编号:(Demo)
字符串
如果你想拆分字符串,建议仍然存在。Demo
型
作为要求的扩展,以显示单词边界是如何工作的...
var_export(preg_split('/\b/', $test));
将在每个单词字符序列之前和之后拆分。Demoecho preg_replace('/\b/', '*', $test);
将在每个单词字符序列的前后添加一个空格。Demodrnojrws4#
下面是一个如何在PHP中使用正则表达式查找单词的例子。
字符串
aor9mmx15#
替代方案
字符串
你需要匹配!