匹配以特定字符串开头并以特定字符串结尾的字符串的内容

Regex to match contents of a string preceded by particular string and ended with a particular string

本文关键字:字符串 结尾 开头      更新时间:2023-09-26

我如何使一个正则表达式,将提取第一个方括号的内容在以下?

Block[first_name][value]返回字符串first_name

Block[last_name][value]返回字符串last_name

我试过了:

这是我当前的正则表达式:http://regex101.com/r/jW0hY1/1

/(?:Block'[).*(?:'[value])/

我想首先我会有一个非捕获匹配Block[。然后我会捕获所有的内容,直到][value]开始。相反,这似乎返回整个字符串。

从索引1中获取匹配的组

(?:Block'[)([^']]*)(?:']'[value'])

演示

或者在你的正则表达式

中做一些改变
(?:Block'[)(.*)(?:']'[value])
演示

正则表达式:(DEMO)

(?:Block'[)(.*)(?:']'[value])

获取内容:

string = "Block[first_name][value]";
result = string.match((/?:Block'[)(.*)(?:']'[value])/, g);
console.log(result[1]); //first_name

问题是.*吞噬了尽可能多的字符。使用非贪婪量词代替,并使用捕获组:

Block'[(.*?)']

如果你也需要捕获值,你可以使用这个表达式:

Block'[(.*?)']'[(.*?)']

编辑:和JS…

var re = /Block'[(.*?)']'[(.*?)']/g;
var match;
while(match = re.exec("Block[first_name][value] Block[last_name][value]")) {
    console.log("Found " + match[1] + " with value: " + match[2]);
}