[英]REGEX: How to match string that followed by space and contains specific char/symbol
i have the following string 我有以下字符串
string string#string#string string
string$string (string) string string string
string string#gulaen#string string-stringan
(string) string#string#string$string string string (string)
string string string$string#string$string#string string
string string#string$string#string string
string#string$string#string string
with this pattern /\\b(\\w+[\\#\\$])\\w+\\b/
i try to match string that followed by space and contains # and $ but i can't get the result that i want. 使用这种模式/\\b(\\w+[\\#\\$])\\w+\\b/
我尝试匹配字符串,其后跟空格,并包含#和$,但是我无法获得想要的结果。 i get the folowing result 我得到以下结果
what i expect is to match the following highlighted blue: 我期望匹配以下突出显示的蓝色:
how to achieve that? 如何实现的? thanks 谢谢
You may create a group that will match the special symbol and 1+ word chars, and quantify it with +
: 您可以创建一个将特殊符号和1+个字符char匹配的组,并用+
对其进行量化:
/\b\w+(?:[#$]\w+)+\b/
See the regex demo 见正则表达式演示
The pattern matches: 模式匹配:
\\b
- a word boundary \\b
单词边界 \\w+
- 1+ word chars \\w+
-1个以上的字符字符 (?:[#$]\\w+)+
- a non-capturing group that matches 1 or more consecutive occurrences of a #
or $
chars followed with 1+ word chars (?:[#$]\\w+)+
-一个非捕获组,它匹配1个或多个连续出现的#
或$
字符,后跟1+个单词字符 \\b
- a word boundary. \\b
单词边界。 echo preg_replace('/\b\w+(?:[#$]\w+)+\b/u', '<span>$0</span>', $str);
Output for the $str
in question: 有关$str
输出:
string <span>string#string#string</span> string
<span>string$string</span> (string) string string string
string <span>string#gulaen#string</span> string-stringan
(string) <span>string#string#string$string</span> string string (string)
string string <span>string$string#string$string#string</span> string
string <span>string#string$string#string</span> string
<span>string#string$string#string</span> string
if (preg_match_all('/\b\w+(?:[#$]\w+)+\b/u', $str, $m)) {
print_r($m[0]);
}
Output: 输出:
Array
(
[0] => string#string#string
[1] => string$string
[2] => string#gulaen#string
[3] => string#string#string$string
[4] => string$string#string$string#string
[5] => string#string$string#string
[6] => string#string$string#string
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.