PHP使用RegEx从字符串中捕获包含特殊字符的单词

时间:2014-06-26 20:40:25

标签: php regex

我在字符串中有特殊的单词,我想根据前缀捕获 示例 Special words such as ^to_this should be caught
由于特殊前缀this,我需要^to_这个词 这是我的尝试,但它无法正常工作

preg_match('/\b(\w*^to_\w*)\b/', $str, $specialWordArr); 

但这会返回一个空数组

2 个答案:

答案 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