[英]RegEx to match whole line after nth occurrence of a string
好久不見,第一次發貼! 提前感謝任何可以提供幫助的人。
我正在使用 Node.JS 和 Electron 制作一個小型桌面應用程序,用於管理游戲文件中的值(來自自定義文件類型,基本上是一個美化的 INI 文件)。 讓人們在一個漂亮的 UI 中自定義文件,而不是梳理數百行代碼。 以下是文件中的示例:
setting $Low
prop $Config A_STRING_HERE "5, 10, 15, 20"
setting $Medium
prop $Config A_STRING_HERE "10, 20, 40, 80"
setting $High
prop $Config A_STRING_HERE "20, 40, 80, 160"
setting $VeryHigh
prop $Config A_STRING_HERE "40, 80, 160, 320"
例如,我將如何匹配包含“A_STRING_HERE”的“設置 $High”(第 3 次)出現直到行尾。 我希望只匹配:
A_STRING_HERE "20, 40, 80, 160"
。
這些值是動態的並且會發生很大變化,因此將行與值匹配不一定是一種選擇。
\A_STRING_HERE.+\g
將匹配所有出現的行尾。\A_STRING_HERE.+\
將第一次匹配到行尾。\A_STRING_HERE.+\??????
將第 3 次匹配到行尾?再次感謝,一切順利!
你可以試試這個正則表達式:
(?<=setting \$High\n\s*?prop \$Config )A_STRING_HERE.*
解釋
(?<=)
- 表示 積極的后視。setting \$High\n\s*?prop \$Config
- 將此匹配項與其他匹配項分開的文本。 您可以省略setting
部分以使其更簡潔。
\n
- 代表新行。\s*?
-懶惰地匹配 0 個或多個空格。 您可以根據需要進行調整。.*
- 匹配除\n
之外的所有內容。 如果您只想包含數字,您也可以在此處具體說明。\g
- 請注意僅使用全局標志。您可以在此處找到上述正則表達式的實現。
const regex = /(?<=setting \$High\n\s*?prop \$Config )A_STRING_HERE.*/g; // Alternative syntax using RegExp constructor // const regex = new RegExp('(?<=setting \\$High\\n\\s*?prop \\$Config )A_STRING_HERE.*', 'g') const str = `setting \$Low prop \$Config A_STRING_HERE "5, 10, 15, 20" setting \$Medium prop \$Config A_STRING_HERE "10, 20, 40, 80" setting \$High prop \$Config A_STRING_HERE "20, 40, 80, 160" setting \$VeryHigh prop \$Config A_STRING_HERE "40, 80, 160, 320"`; console.log(str.match(regex)[0]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.