php表达式preg_match

时间:2013-07-17 08:02:40

标签: php regex

我一直在努力解决这个问题,我无法提出解决方案, 我有一个字符串arrary

"Descripcion 1","Description 2"

我需要按数字进行过滤,所以我想也许我可以使用preg_match()并找到正好有1个数​​字1或2等等,然后根据数字可能会改变之前的字符串,但数字不能,我已经尝试过使用

preg_match(" 1{1}","Description 1") 

当发现一个空格后跟字符串“1”恰好一次但返回false时,它被假定为返回true。

也许你们中的一些人在php中有更多使用正则表达式的经验,可以帮助我。

非常感谢你。

3 个答案:

答案 0 :(得分:2)

您可以使用strpos而不是preg_match!

foreach($array as $string) {
    if(strpos($string, ' 1') !== false) {
        //String contains " 1"!!
    }
}

这比正则表达式快得多。 或者,如果数字必须位于字符串的末尾:

foreach($array as $string) {
    if(substr($string, -2) == ' 1') {
        //String ends with " 1"!!
    }
}

答案 1 :(得分:1)

你忘记了正则表达式分隔符。请改用preg_match('/ 1/', ...)

但是,如果您只想测试字符串是否包含在另一个字符串中,则根本不需要正则表达式!请参阅Lars Ebert's answer

答案 2 :(得分:0)

您可能已成功使用

    if (preg_match('/(.*\s[1])/', $var, $array)) {
      $descrip = $array[1];
    } else {
      $descrip = "";
    }

我在上述正则表达式上测试了描述1,thisIsAnother 1和OneMore 1的3个单独的字符串值。通过表达式发现每个字符串都是真的,并保存到组1中。

正则表达式代码的解释是:
()匹配括号之间的正则表达式并将匹配捕获到后向引号1中 。*在0和尽可能多的次数(贪婪)之间匹配任何不是换行符的单个字符 \ s匹配单个空白字符(空格,制表符,换行符)
[1]匹配角色1