簡體   English   中英

獲取用大括號括起來的文本,該大括號在javascript中也包含大括號

[英]Getting text enclosed by curly brackets that also contain curly brackets in javascript

我有一個包含文本字符串的textarea,我將其值獲取到名為updatestring的變量。 我正在此文本區域中獲得由update(){}包圍的文本。 此文本進入變量updatecode。

var updatestring = 'update(){\n//logic code here...\n\n\n}\n' ;
var updatecode = updatestring.match(/update\(\)\{([^}]+)\}/)[1];

我的問題是,我希望有可能update(){}包含的文本也包含}字符。 在JavaScript中,有沒有不使用庫就可以做到這一點的簡便方法?

編輯: torazaburo的答案更好,但是我將在這里留出這僅僅是為了教育目的而顯示另一種方式。 ;)

試試這個:/[ /[^{]*{((?:.|\\r|\\n)*)}/ :.| /[^{]*{((?:.|\\r|\\n)*)}/

例如: https//regex101.com/r/QOIyvz/4

[^{]* -跳過所有字符,直到找到{並在其之前停止。

{ -匹配第一個大括號。

((?:.|\\r|\\n)*) - ?:啟動非捕獲組(恕不退還)和* “貪婪”匹配所有的字符,回車和換行,並使其所有部分返回的捕獲組中的一個(在另一個(和之間)

} -正則表達式將停止貪婪搜索以匹配找到的最后一個。

Example: updatestring.match(/[^{]*{((?:.|\r|\n)*)}/)[1]

貪婪匹配(這是*的默認行為)將跳過中間的}字符直到最后一個字符,因此不需要特殊的操作:

 var updatestring = 'update(){\\n//logic {embedded curly brackets}code here...\\n\\n\\n}\\n' ; var regexp = /{([^]*)}/; // ^ match starting curly // ^^^^^^ capture // ^^^ any character including newline // ^ any number of times // ^ match ending curly var regexp = result = updatestring.match(regexp)[1]; console.log(updatestring, result); 

[^]將匹配所有內容,包括換行符。

順便說一句,為什么要嘗試使用regexp解析類似於JavaScript的內容?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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