2013-07-30 57 views
-3

第一次出現,我有以下字符串:正則表達式 - 如何檢查字符串的PHP

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);它的工作,但這一代碼也返回true如果別人OCCURENCES包含「ABC」。謝謝!

編輯:對不起,但這不是一個重複的問題。請參閱我的問題的第二部分。在第二部分中,我沒有要求在第一次出現時如何獲得元素。 PHP startsWith() and endsWith() functions還沒有解決我的問題的第二部分。謝謝。

回答

2

您不需要使用正則表達式。 PHP有很多可以搜索你的內建函數。

對於第一次出現:

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

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

您可以通過爆炸 「\ t」 的每一行,然後檢查要與上述strpos功能爲準的。

+0

哦,這很好!我想我可以用這個做點什麼。感謝大家的幫助! – DrSAS

1

無需正則表達式,你可以使用:

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

它會檢查,農行位於0指數的字符串。 (如果abc不存在,它將返回-1)

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 
}