1

原来我有这样的文字;

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"脚本的其余部分继续工作(许多其他事情正在发生,但重要的是让文本格式化),而且呈现的文本只是一个例子,实际的文本是巨大的并且有一些小差异(在文本字符串中实际上可以是许多其他单词而不仅仅是字符串)

Obs:我真的希望这只是一个模式(匹配)问题,但如果不是,我只是 JavaScript 的初学者,我的母语不是英语,所以我需要一个非常详细的解释来解决我的问题问题。

4

1 回答 1

4

因为(我相信)该模式没有得到"\n"textoFather正在返回null

你是对的,.元字符不匹配换行符。从MDN 文档

(小数点)匹配除换行符以外的任何单个字符。

您可以[\s\S]改用:

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

[\s\S]是一个字符类。\s匹配任何空白字符并\S匹配每个不是空白字符的字符。所以在一起,他们匹配每个角色。

或者您可以使用[^}]which 匹配不是的每个字符}

/{([^}]*)}/

那么你甚至不必使量词变得懒惰。

于 2013-06-24T08:27:52.740 回答