簡體   English   中英

正則表達式以匹配以特定字符串開頭並以特定字符串結尾的字符串的內容

[英]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]開始為止。 相反,這似乎返回了整個字符串。

從索引1獲取匹配的組。

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

DEMO


或者在您的正則表達式中進行一些更改

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

DEMO

問題是.*吃掉盡可能多的字符。 請改用非貪婪的量詞和捕獲組:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM