Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
REGEX-如何检查PHP中字符串的首次出现_Php_Regex - Fatal编程技术网

REGEX-如何检查PHP中字符串的首次出现

REGEX-如何检查PHP中字符串的首次出现,php,regex,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 // tr

我有以下字符串:

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
此外,如果需要,我需要检查其他部件。例如,如果我需要检查2st部件:

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。谢谢大家!


编辑:对不起,这不是一个重复的问题。请看我问题的第二部分。在第二部分中,我不要求如何在第一次出现时获取元素。还没有解决我问题的第二部分。谢谢。

无需正则表达式,您只需使用:

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

它将检查abc是否位于字符串的0索引处。如果abc不存在,它将返回-1,您不需要使用正则表达式。PHP有很多内置函数可以搜索您

首次出现时:


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

首先,获取行并分解字符串,使每一列都位于自己的存储桶中

$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
}

哦,这太好了!我想我可以用这个做点什么。谢谢大家的帮助!
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
}