我在字符串中有特殊的单词,我想根据前缀捕获
示例 Special words such as ^to_this should be caught
。
由于特殊前缀this
,我需要^to_
这个词
这是我的尝试,但它无法正常工作
preg_match('/\b(\w*^to_\w*)\b/', $str, $specialWordArr);
但这会返回一个空数组
答案 0 :(得分:2)
您的代码将是,
<?php
$mystring = 'Special words such as ^to_this should be caught';
$regex = '~[_^;]\w+[_^;](\w+)~';
if (preg_match($regex, $mystring, $m)) {
$yourmatch = $m[1];
echo $yourmatch;
}
?> //=> this
<强>解释强>
[_^;]
将特殊字符添加到此字符类中,以确保单词的开头是特殊字符。\w+
在特殊字符之后,必须跟随一个或多个单词字符。[_^;]
单词字符必须后跟一个特殊字符。(\w+)
如果满足这些条件,请将以下一个或多个单词字符捕获到一个组中。 答案 1 :(得分:1)
如果没有其他一些示例,这将适用于您发布的内容:
$str = 'Special words such as ^to_this should be caught';
preg_match('/\s\^to_(\w+)\s/', $str, $specialWordArr);
echo $specialWordArr[1]; //this