正则表达式php用于删除双括号中的一些内容

时间:2014-07-04 05:43:16

标签: php

我想从php

中的表达式中删除模式
$string="[हो_VAUX, अस_VAUX] :   837";

我希望将模式हो,अस作为答案。 所以,我做了这个

$str=preg_replace('/\[ _A-Z/', '', $string);//removes backspace characters

$str=strstr($str, "_", true); //remnoves all the characters of the right to _.

我想得到हो,अस。请帮我理解这个。 हो,अस

4 个答案:

答案 0 :(得分:1)

为什么不使用它?

$str=preg_replace('/\w|\[|\]|:|\s/', '', $string);

输出

हो,अस

解释

\w = 0-9a-zA-Z_ 
| = or
\[ = [
| = or
\] = ]
| = or
: = :
| = or
\s = ' '

我甚至将它最小化了一点。

如果你真的想得到花哨的话

 $str = preg_replace("/^.*?(हो).*?(अस).*?$/", "\1,\2",$string);

答案 1 :(得分:0)

看看这将完成工作,但绝不是最有效的方法:

$string="[हो_VAUX, अस_VAUX] :   837";
$str=preg_replace('/[a-zA-Z0-9]+/', '', $string);//removes backspace characters
$str = str_replace(array(':', '_', ']', '[', ' '), '', $str);

echo $str;

这给了你:

हो,अस

Example


说明:

  • 第一次替换 - preg_replace()删除所有字母数字字符
  • 第二个替换 - str_replace()从字符串中删除提供的不需要的字符数组。

答案 2 :(得分:0)

试试这一行,

$testString = "[हो_VAUX, अस_VAUX] :   837";
echo preg_replace("/[A-Z0-9\]\[_:\s]/", "", $testString);

答案 3 :(得分:0)

如果只是删除所有字母数字和一些选择的符号字符得到你的答案,以下代码将完成工作:

$answer = preg_replace('/\\w|[][ :]/', '', $string);
//                               ^- add more symbols here