簡體   English   中英

RegEx 在第 n 次出現字符串后匹配整行

[英]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.

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