鑒于以下幾行:
classes!("text-xl", "text-blue-500")
String::from("test")
classes!("text-sm")
我希望提取text-xl,text-blue-500并text-sm可能提取其中的任何其他字串classes!
到目前為止,我所擁有的是:
(?<=classes!).*- 這給了我課后的一切!但不是確切的值(?!^")".*?"- 這給了我想要的值,但帶有引號- 我使用全域和多行標志
uj5u.com熱心網友回復:
如果您使用的是 Javascript,并且支持正向后視(您不需要多行標志,只需要全域標志)
(?<=classes!\((?:"[^"]*",\s*)*")[^"]*(?=")
(?<=向左斷言的正向回溯classes!\(比賽classes!((?:"[^"]*",\s*)*匹配可選的重復"...","匹配雙引號
)近距離觀察[^"]*匹配可選字符以外的字符"(?=")"向右斷言
正則運算式演示
const regex = /(?<=classes!\((?:"[^"]*",\s*)*")[^"]*(?=")/g;
const str = `classes!("text-xl", "text-blue-500")
String::from("test")
classes!("text-sm")
`;
console.log(str.match(regex))
uj5u.com熱心網友回復:
您可以像這樣嘗試非固定寬度的lookbehind:
(?<=^classes!\("(?:[^"]*"[^"()]*")*)[^"]*
查看在線演示
(?<=- 開啟積極的回顧;^classes!\("- 起始線錨點和匹配字面意思'classes!("';(?:[^"]*"[^()"]*")*- 一個嵌套的非捕獲組匹配(0 次)除引號(和括號)之外的任何字符、引號和重復的相同序列。)- 近距離觀察;
[^"]*- 匹配引號以外的 0 (貪婪)字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411019.html
標籤:
