文件中的正则表达式超过几行替换

regex in file over several lines replacing

我有这样的正则表达式:

/ requires: \[.*("Instance.model.*?").*\] /gs

我有这样的数据:

requires: [
    "Instance.model.a",
    "Instance.model.b",
    "Instance.model.c",
    "Other.mode.test",
    "Instance.model.d"
],

"Instance.model.e"

我想删除这个文件里面的所有"Instance.model.?", requires,但是给定的正则表达式只有returns最后一个条目(d)。 我怎样才能让它在 PhpStorm 中工作?

如果支持,一种选择是在回顾 * 中使用无限量词,或者在使用 Java 时使用有限量词 {0,1000}

(?<=^requires: \[[^\[\]]{0,1000})"Instance\.model\.[a-z]",?\r?\n

说明

  • (?<=正向后视,断言左边的是
    • ^requires: \[ 匹配要求从字符串的开头后跟space
    • [^\[\]]{0,1000} 匹配 0 - 1000 次(您可以相应更改此值)除方括号外的任何字符
  • )关闭回顾
  • Instance\.model\. 匹配 Instance.model.
  • [a-z]",?\r?\n 匹配字符 a-z、可选逗号和换行符

Regex demo

根据评论,最终适合您的模式(带转义点)

(?<=^ {0,8}requires: \[[^\[\]]{0,1000})"Instance\.model\.[a-zA-Z]*",?\r?\n?

Regex demo