REGEX - 如何在PHP中检查字符串的第一次出现

时间:2013-07-30 18:20:47

标签: php regex

我有以下字符串:

abc:def    abc:ghi    abc:jkl

如何检查我的第一次出现是否以" abc开始:"?除了制表符(\ t)之外,该字符串没有空格。这是我需要的结果:

abc:def    abc:ghi    abc:jkl    // true
foo:def    abc:ghi    abc:jkl    // false
def        abc:ghi    abc:jkl    // false
abc:def    foo:ghi    jkl        // true

另外,如果需要,我需要检查其他部分。例如,如果我需要检查第2部分:

abc:def    abc:ghi    abc:jkl    // true
foo:def    bar:ghi    abc:jkl    // false
def        ghi        abc:jkl    // false
foo:def    abc:ghi    jkl        // true

我尝试了preg_match("/abc\:([^\t]+)/",$data,$match);它已经有效但如果其他出现的内容包含" abc:"则此代码也返回true。谢谢!

编辑:对不起,这不是一个重复的问题。请参阅我的问题的第二部分。在第二部分中,我没有要求如何在第一次出现时获得一个元素。 PHP startsWith() and endsWith() functions我的问题的第二部分没有解决方案。谢谢。

3 个答案:

答案 0 :(得分:2)

您不需要使用正则表达式。 PHP有许多内置函数可以搜索你。

首次出现:

http://php.net/manual/en/function.strpos.php

strpos($data, 'abc') === 0

您可以按“\ t”展开每一行,然后使用上述strpos函数检查您想要的任何一行。

答案 1 :(得分:1)

不需要正则表达式,您可以使用:

   (strpos($string, 'abc') === 0)

它将检查abc是否位于字符串的0索引处。 (如果abc不存在,则返回-1)

答案 2 :(得分:1)

首先,获取该行并展开字符串,以便每列都有自己的存储桶。

$line_data = preg_split("/\t/",$line);

然后,选择您想要的列,看看它是否符合您的需要。

if (preg_match("/^abc\b/",$line_data[1])){  #This matches the beginning of column 2 only if the string is on a boundary.
    #Do stuff
}