Javascript 如何使用正则表达式解析类似JSON的文件
Javascript 如何使用正则表达式解析类似JSON的文件,javascript,regex,Javascript,Regex,我有这个输入数据的结构,它就像JSON一样,但不包含字符串。我只需要从这些数据中解析一些信息 { .appVersion = "1230"; DisplayStrings = ( A ); customParameters = ( { name = Axes;.......(continues)}''' 代码看起来是这样的,这里发生的是匹配,但搜索直到最后出现分号。我尝试了所有我发现的非贪婪的技巧和技巧,但我感到无助 const regex = /.appVersion = (".*"?);/
我有这个输入数据的结构,它就像JSON一样,但不包含字符串。我只需要从这些数据中解析一些信息
{ .appVersion = "1230"; DisplayStrings = ( A ); customParameters = ( { name = Axes;.......(continues)}'''
代码看起来是这样的,这里发生的是匹配,但搜索直到最后出现分号。我尝试了所有我发现的非贪婪的技巧和技巧,但我感到无助
const regex = /.appVersion = (".*"?);/
const found = data.match(regex)
console.log(found)
如何访问保存在.appVersion变量下的值?您需要在
appVersion
之前转义,因为它是正则表达式中的一个特殊字符,您可以使用\d
而不是*
来只匹配数字。如果您只想捕获数字,而不需要引号,则可以将其从括号中去掉
const regex = /\.appVersion = "(\d+)";/
const found = data.match(regex)
const appVersion = found[1];
您的正则表达式正在查找正则表达式中的“任意字符”。用反斜杠转义:
/\.appVersion = ("\d+");/
如果那是你需要的
我不确定你想解析的格式来自何处,但是考虑询问(制作)你的数据提供者返回JSON字符串,这样你就可以很容易地调用<代码> JSON.PARSER()/<代码>这两个节点都在节点和浏览器环境中工作。
< P>不要使用<代码> .*/COD>捕获值,它是贪婪的。p>
您可以使用类似于\“[^\”]*
-匹配引号,然后匹配除引号以外的任何字符,尽可能多地匹配
试一试
请注意,还应引用第一个点,空格应与示例中的完全相同。您可以尝试以下操作:
var data='{.appVersion=“1230”;DisplayStrings=(A);customParameters=({name=Axes;…(continues)}';
常量正则表达式=/.appVersion=[^;]*///正则表达式测试:https://regex101.com/r/urX53f/1
const found=data.match(regex);
var trim=found.toString().replace(/“/g)”;//必要时删除“”
console.log(找到.toString());
控制台日志(修剪)
我想我们需要更多的信息来回答这个问题。你说这是数据的结构,但它看起来有什么不同吗?它总是看起来非常相似吗?你的异常结果\匹配项是什么?如果它总是看起来非常相似,但没有实质性的差异,我会通过执行data.split来创建一个字符串数组(“;”)
,我会确保所有字符串都有{
字符从开始处删除,所有字符串都会被删除空白,然后我会在数组中查找以.appVersion
开头的字符串,然后从那里开始工作。为什么输入数据的结构是这样的?这是一个外部API还是您自己制作的?“就像JSON一样。”“我不会这么说。你有=
和;
以及=({name=Axes;…(continues)}
是什么。它看起来一点也不像JSON,只是有一个大括号。啊,开始的那一段,完全忘记了。Thasnk!
const string = '{ .appVersion = "1230"; DisplayStrings = (...(continues)';
const appVersion = string.match(/\.appVersion\s*=\s*"([^"]+)"/)[1];
const regex = \.appVersion = \"([^\"]*)\";