2015-12-12 4 views
1

У меня есть строка, содержащая некоторые подстроки, разделенные новой строкой.Соответствует определенной строке в строке с использованием regex

Forexample:

$x="This is the first line. 
     This is the second line. 
     This is the third line."; 

Я хочу, чтобы получить третью строку из этой строки,

Мой регулярное выражение до сих пор:

/\s*([^\n]+)/i 

Но это возвращает всю строку,

Я также пробовал

/\n{3}\s*([^\n]+)/i 

Ничего не соответствует.

Есть ли способ в regex решить мою проблему? Я пытался решить это сам за последние 30 минут, но все мои попытки потерпели неудачу.

preg_match_all("/\s*([^\n]+)/i",$x,$m); 
print_r($m); 

Спасибо!

+2

Почему не взрываются с '\ n' и получить последний элемент? Регулярное выражение необходимо, когда у вас есть сложные шаблоны. Здесь вам нужно получить определенную строку. –

+0

Не могли бы вы представить полный пример строки, которую вы пытаетесь проанализировать, так как вы сказали, что это лишь небольшая часть большей строки, которую вы пытаетесь разобрать ... – Clay

ответ

1

Просто используйте модификатор s вместе с $. В дольном режиме $ соответствует концу самой последней строки.

preg_match('~\s*([^\n]+)$~s',$x,$m); 

DEMO

+1

Вам не нужно '/ s'. Я сомневаюсь, что вам нужно регулярное выражение вообще. –

+0

@Pemapmodder Я уже добавил, что .. –

5

Если я не уверен, непонимание сложности вашей ситуации, вы должны быть в состоянии использовать только explode() как это:

$split = explode("\n", $x); 
print_r($split[2]); 
+0

Также обрезаем вывод, так как кажется, что '$ x' содержит ведущие пробелы. – SOFe

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