关于REGEX:REGEX – 如何在PHP中检查字符串的第一次出现

REGEX - How can i check the first occurence of a string in PHP

本问题已经有最佳答案,请猛点这里访问。

我有以下字符串:

1
abc:def    abc:ghi    abc:jkl

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

1
2
3
4
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部分:

1
2
3
4
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()和endswith()函数并不能解决第二部分的问题。谢谢您。


你不需要使用regex。PHP有很多内置函数可以搜索您。

首次出现:

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

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

您可以将每行分解为" ",然后使用上面的strpos函数检查所需的行。


首先,获取行并分解字符串,这样每个列都有自己的桶。

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

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

1
2
3
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
}


不需要regex,只需使用:

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

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