我有以下字符串:
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我的问题的第二部分没有解决方案。谢谢。
答案 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
}