2015-06-17 4 views
2

У меня есть большая строка, как это:Получить конкретное содержание строк внутри большой строки

[/az_column_text][/vc_column_inner][vc_column_inner width="3/4"] 
    [az_latest_posts post_layout="listed-layout" post_columns_count="2clm" post_categories="assemblea-soci-2015"] 
    [/vc_column_inner][/vc_row_inner][/vc_column] 

Что мне нужно извлечь:

assemblea-soci-2015 

Конечно, это значение может изменяться, а также большая строка также может измениться. Мне нужно регулярное выражение или что-то еще, чтобы извлечь это значение (оно всегда будет от post_categories="my-value-to-extract") от этой большой строки.

Думаю, что в качестве начала моей части, как начала возможной подстроки и следующего символа ", я думаю, что это конец моей части, но не знаю, как это сделать.

Есть ли элегантный способ сделать это и для будущих значений, конечно, разной длины?

+0

Просто замените 'в начало возможной подстроки и nex t char' в этом 'post_categories =" как начало возможной подстроки и следующий символ char '' with '(. *?)' – sln

ответ

0

Вы можете использовать это регулярное выражение:

(?<=post_categories=")[^"]+(?=") 

?<=() 'назад ищет post_categories=" до желаемого матча, и (?=) (предпросмотр) ищет " после желаемого матча.

[^"] получает матч (который предполагается не содержит каких-либо ")

Demo

Пример PHP код:

$text='[/az_column_text][/vc_column_inner][vc_column_inner width="3/4"] 
    [az_latest_posts post_layout="listed-layout" post_columns_count="2clm" post_categories="assemblea-soci-2015"] 
    [/vc_column_inner][/vc_row_inner][/vc_column]'; 
preg_match ("/(?<=post_categories=\")[^\"]+(?=\")/", $text,$matches); 
echo $matches[0]; 

Выход:

assemblea-soci-2015 
1

Вы можете использовать это регулярное выражение в PHP:

post_categories="\K[^"]+ 

RegEx Demo

0

Это должно извлечь то, что вы хотите.

preg_match ("/post_categories=\"(.*)\"\[\]/", $text_you_want_to_use) 
+0

Это возвращает мне пустой вывод –

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