[英]Regex to match contents of a string preceded by particular string and ended with a particular string
我如何制作一個正則表達式來提取以下第一個方括號的內容?
Block[first_name][value]
返回字符串first_name
。
Block[last_name][value]
返回字符串last_name
。
我嘗試過的
這是我當前的正則表達式: http : //regex101.com/r/jW0hY1/1
/(?:Block\\[).*(?:\\[value])/
我首先想到了對Block[
進行非捕獲式匹配。 然后,我將捕獲所有內容,直到][value]
開始為止。 相反,這似乎返回了整個字符串。
問題是.*
吃掉盡可能多的字符。 請改用非貪婪的量詞和捕獲組:
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]);
}
正則表達式:( DEMO )
(?:Block\[)(.*)(?:\]\[value])
獲取內容:
string = "Block[first_name][value]";
result = string.match((/?:Block\[)(.*)(?:\]\[value])/, g);
console.log(result[1]); //first_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.