2013-07-30 2 views
-3

У меня есть следующая строка:REGEX - Как я могу проверить первое вхождение строки в PHP

abc:def abc:ghi abc:jkl 

Как я могу проверить, если мой первый старт с встречаемостью «а:»? Строка не содержит пробелов, кроме таблиц (\ 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); это работало, но этот код также возвращает true если другие вхождения содержат «а:». Спасибо!

EDIT: Извините, но это не дублирующий вопрос. См. Вторую часть моей проблемы. В этой второй части я не запрашиваю, как получить элемент в первом случае. PHP startsWith() and endsWith() functions не имеет решения для этой второй части моей проблемы. Спасибо.

ответ

2

Вам не нужно использовать регулярное выражение. PHP имеет множество встроенных функций, которые могут вас искать.

Для первого появления:

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

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

Вы можете взорваться каждую строку с помощью «\ т», а затем проверить, какой из них вы хотите с выше 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 
} 
Смежные вопросы