Select 正则表达式搜索的特定部分

Select Specific Portion of Regex Search

在 Sublime Text 2 中,我只想 select 在包含至少 7 个双引号的行中第 4 次出现双引号。我想用 find all 来做到这一点,所以第 4 次出现的双引号中的每一个都是 selected。我有以下搜索条件来查找至少包含 7 个双引号的行:

".*".*".*".*".*".*".*

我想要像这样在每个第 4 个引号处有一个光标(| 意思是光标):

"test",123,456,"more |"testing", "test1"
"test",123,456,"other |"testing", "test2"

"Find All" select 是整行,而不仅仅是第 4 个双引号。我知道你可以在每个位置使用替换而不是游标来做几乎相同的事情。例如:

Find What: (".*".*".*".*)"(.*".*".*)
Replace With: <anything you want>

但我真的想要在每个第 4 个引号处使用光标键入的选项,因为我想使用其他功能。

您可以使用以下正则表达式来匹配第 4 个引号:

^(?:[^"\n]*"){3}[^"\n]*\K"(?=(?:[^"\n]*"){3})

或者第4个双引号之前的位置:

^(?:[^"\n]*"){3}[^"\n]*\K(?="(?:[^"\n]*"){3})

demo

正则表达式匹配:

  • ^ - 行首
  • (?:[^"\n]*"){3} - 除双引号和换行符外,出现 3 次零个或多个字符,后跟双引号,然后是...
  • [^"\n]* - 除双引号和换行符外的零个或多个字符
  • \K - 运算符省略了目前匹配的所有文本
  • " - 一行中的第 4 个双引号
  • (?=(?:[^"\n]*"){3}) - 后跟 3 次出现的零个或多个字符(双引号除外)和换行符后跟 ".