JavaScript,正则表达式解析大括号中的字符串内容
javascript, regex parse string content in curly brackets
我是正则表达式的新手。我正在尝试解析字符串中大括号内的所有内容。我查找了这篇文章作为参考,并完全按照其中一个答案的建议做了,但是结果出乎意料。
这是我所做的
var abc = "test/abcd{string1}test{string2}test" //any string
var regex = /{(.+?)}/
regex.exec(abc) // i got ["{string1}", "string1"]
//where i am expecting ["string1", "string2"]
我想我错过了什么,我做错了什么?
更新
我能够用/g
获得它以进行全局搜索
var regex = /{(.*?)}/g
abc.match(regex) //gives ["{string1}", "{string2}"]
如何获取不带括号的字符串?
"test/abcd{string1}test{string2}test".match(/[^{}]+(?='})/g)
生产
["string1", "string2"]
它假定每个}
都有一个相应的{
,并且{...}
部分不嵌套。 它也不会捕获空{}
部分的内容。
var abc = "test/abcd{string1}test{string2}test" //any string
var regex = /{(.+?)}/g
var matches;
while(matches = regex.exec(abc))
console.log(matches);
试试这个:
var abc = "test/abcd{string1}test{string2}test" //any string
var regex = /{(.+?)}/g //g flag so the regex is global
abc.match(regex) //find every match
在javascript中阅读正则表达式的好地方在这里,一个测试的好地方在这里
祝你好运!
没有错。但是您需要查看捕获组(数组中的第二个元素(才能获得所需的内容(可以忽略第一个元素(。要获得所有事件,仅运行一次exec
是不够的,您需要使用 match
循环访问结果。
编辑:没关系,afaik 您无法访问带有match
捕获组。一个更简单的解决方案是使用积极的前瞻性,正如迈克塞缪尔所建议的那样。
这个结果:
["{string1}", "string1"]
向您显示,对于第一个匹配项,整个正则表达式匹配"{string1}"
,第一个捕获括号匹配"string1"
。
如果要获取所有匹配项并查看每个匹配项的所有捕获括号,可以使用"g"标志并循环遍历,像这样多次调用exec()
:
var abc = "test/abcd{string1}test{string2}test"; //any string
var regex = /{(.+?)}/g;
var match, results = [];
while (match = regex.exec(abc)) {
results.push(match[1]); // save first captured parens sub-match into results array
}
// results == ["string1", "string2"]
你可以在这里看到它的工作:http://jsfiddle.net/jfriend00/sapfm/
试试这个文件
const fs = require('fs');
fs.readFile('logs.txt', function(err, data) {
if(err) throw err;
const paragraph = "'" + data + "'";
const regex = /'d+'<;>'S+'<;>('d+)'<;/g;
const found = paragraph.match(regex);
console.log(found);
})
相关文章:
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 从字符串中提取年份的Javascript正则表达式
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- 如何将正则表达式包含到字符串数组中
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 使用正则表达式反转字符串中的元音
- 如何分割由JavaScript中使用正则表达式的多个部分组成的字符串
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 删除两个字符串正则表达式之间的所有内容
- Javascript,字符串正则表达式匹配
- 字符串正则表达式模式.replace(/{0}/, “$0.00”) 不起作用
- Javascript:字符串正则表达式
- 如何在JavaScript中子字符串正则表达式
- 匹配大写或小写字符串正则表达式
- 逗号和空格分隔的数字和连字符分隔的字符串正则表达式
- 解析CGI查询字符串正则表达式
- 分析已知键的字符串正则表达式,但保留分隔符
- 在一组字符串中重新排列一个字符串 - 正则表达式
- 从字符串正则表达式中提取多个值