2012-06-14 2 views
0

Я стараюсь изо всех сил, чтобы получить голову вокруг регулярного выражения, но не слишком повезло.regex искать строку для содержимого между двумя строками

Я пытаюсь выполнить поиск в строке для текста, я знаю, как начинается строка, и я знаю, как заканчивается строка, я хочу вернуть ВСЕ текст между строкой, включая начало и конец.

Начать поиск = [{ "лк":

End поиск = }]

т.е.

[{ "лк": variablehere}]

До сих пор я пробовал

/^\[\{"lx":(*?)\}\]/; 

и

/(\[\{"lx":)(*)(\}\])/; 

Но никакой реальной пользы ... может кто-нибудь помочь?

Большое спасибо

ответ

1

Возможно, вы ошибаетесь, полагая, что * является подстановочным знаком. Используйте период (.), и все будет хорошо.

Кроме того, вы уверены, что хотите указать нуль или больше? Если должно быть значением, используйте + (один или несколько).

Javascript:

'[{"lx":variablehere}]'.match(/^\[\{"lx":(.+?)\}\]/); 
+0

Отлично. + Решил мою проблему! Большое спасибо! –

+0

Пожалуйста, отметьте ответ как принято, затем :) – Utkanos

+0

Возможно, вы захотите сделать '+' неживым, как ioseb, – georg

1

* звезда символ умножает предыдущий символ. В вашем случае нет такого характера. Вы должны либо поставить ., что означает «любой символ», или что-то более конкретное, как \S, что означает «любой символ без пробелов».

1

Возможное решение:

var s = '[{"lx":variablehere}]'; 
var r = /\[\{"(.*?)":(.*?)\}\]/; 
var m = s.match(r); 

console.log(m); 

Результаты в этом массиве:

[ '[{"lx":variablehere}]', 
    'lx', 
    'variablehere', 
    index: 0, 
    input: '[{"lx":variablehere}]' ] 
1
\[\{"lx"\:(.*)\}\] 

Это должно работать для вас. Вы можете достигнуть захваченной переменной с помощью \ 1 нотации.

0

Попробуйте это:

^\[\{\"lx\"\:(.*)\}\]$ 

весь текст между [{ "лк": и}] вы найдете в переменной обратной ссылки (что-то вроде \ $ 1, зависит от языка программирования).

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