2013-06-03 2 views
0

Так что я пытался создать скрипт, который в основном извлекает из txt-файла список.Как использовать preg_match лучше

Теперь список не является проблемой. Это тем более alg. im с использованием

так, например.

Если один из устройств имеет выход ABC (R) 1234, я использую предварительное соответствие для поиска ABC, а затем разрезаю) и возьмите 1234, который мне нужен.

НО Я только что заметил другое устройство, выход ABC 1234, поэтому мой разрез не будет работать.

я могу сделать 2 preg_matchs как так

preg_match ('/ ABC /', $ матч) {и т.д. правильно?

, но тот мой разрез ..

так, то я сказал, а почему это не я сделать матч PREG для ABC (R) и ABC?

ну он не любит (R) .. как я могу сопоставить preg_match для ABC (R) и ABC.

ответ

0

Вы можете сделать часть регулярного выражения необязательной с помощью квантора ?. Как это:

$pattern = '/ABC(?:\([^)]+\))?\s*/'; 

Здесь ([^)]+) часть (которая читается как «соответствует открывающую скобку, то все, что не закрывающая один, то закрывающая один) помещается в не-захвата группы (с (?:...)) нотации, который имеет к нему прикрепленный квантор ?. Другими словами, он будет захватывать весь согласованный текст, если он соответствует, но даже не заметит, если его там нет.

Вы можете использовать его с preg_replace сократить эти части от (demo):

$test1 = 'ABC(R)1234'; 
$test2 = 'ABC 5678'; 
echo preg_replace($pattern, '', $test1), PHP_EOL; // 1234 
echo preg_replace($pattern, '', $test2), PHP_EOL; // 5678 
+0

Это работало как шарм. конечно, я немного изменил его, чтобы соответствовать моим потребностям, но спасибо! – Luis

Смежные вопросы