2013-06-24 3 views
1

Первоначально у меня был такой текст;Javascript, pattern Regex

asa#fathernode 
{oi#string 
oi2#string} 

Мой сценарий получить массив, как это (потому что другие методы лечения происходит):

[ "asa#fathernode" , "{oi#string" , "oi2#string}" ] 

Я тогда сделать строку, как это:

"asa#fathernode\n{oi#string\noi2#string}\n" 

Мой сценарий, прежде чем я получаю строка без обработки (без "\n"):

asa#fathernode{oi#stringoi2#string} 

и я использовал:

textoFather = textoFather.match(/{(.*?)}/)[1]; 

, чтобы получить то, что между фигурными скобками, который был

"oi#stringoi2#string" 

, но мне нужно отформатирован, как это было первоначально

oi#string 
oi2#string 

и потому (Я считаю), что картина не получает "\n", textoFather возвращается null

Мне действительно нужно получить "\n", чтобы остальная часть скрипта продолжала работать (многое другое происходит, но важно, чтобы текст был отформатирован), также представленный текст является просто примером, фактический текст HUGE и имеют некоторые небольшие отличия (в текстовой строке может быть много других слов, а не просто строк)

Обс: Я действительно надеюсь, что это всего лишь проблема с шаблоном (совпадением), но если это не так, я просто новичок в JavaScript, и мой родной язык не является английским, поэтому мне понадобится довольно подробное объяснение того, как решить мою проблему.

+0

Форматирование вопроса - это уже большой шаг, чтобы получить хорошие ответы, так почему бы вам не потратить время, чтобы сделать это? – HamZa

ответ

4

, потому что (я считаю), что картина не получает "\n", то textoFather возвращается null

Вы правы, . мета-символ не соответствует разрывы строк. От MDN documentation:

(десятичная точка) соответствует любому одиночному символу, кроме символа новой строки.

Вы можете использовать [\s\S] вместо:

/{([\s\S]*?)}/ 

[\s\S] класс персонажа. \s соответствует любому символу пробела и \S соответствует любому символу, который не является символом пробела. Таким образом, они соответствуют каждому персонажу.

Или вы могли бы использовать [^}], который соответствует каждому символу, который не }:

/{([^}]*)}/ 

Тогда вы не должны даже сделать квантор ленивый.

+0

Спасибо, что решили мою проблему. –