僅當n行之前的另一個字符串在任何支持PCRE的文本編輯器中匹配時,正則表達式才匹配n行之后的字符串

我有一個PHP數據庫配置文件(在支持PCRE的代碼編輯器中打開),其中包含用于生成連接字符串的各種引擎憑據。

現在,正如我在問題標題中提到的,我想匹配某些字符串"DB_DATABASE",前提是在n行(假設3行)之前存在如下所示的“mysql”:

....
....
'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'anydb'),
....
....

如果我在3行之前說,那么它不應該與4行之前的“mysql”匹配,即它不應該與'mysql' => [匹配。請注意,除了這里提到的數據庫引擎連接細節之外,還有其他的數據庫引擎連接細節,因此需要匹配mysql,并且僅當它正好出現在DB_DATABASE上方的3行時。

我嘗試了一些復雜的正則表達式,但沒有一個能滿足我的需求,讓我提一提我認為最接近的正則表達式,但徒勞無功:

^[\S\s]*?mysql\S*$(?:\n.*){3}\S*DB_DATABASE

感謝所有努力幫助解決此問題的人。。。

? 最佳回答:

我建議將單詞作為整個單詞進行匹配,并使用\K運算符僅使用DB_DATABASE字符串:

\bmysql\b.*(?:\n.*){3}\n.*\K\bDB_DATABASE\b

請參閱regex演示。細節:

  • \bmysql\b-一個完整的單詞mysql
  • .*-行的其余部分
  • (?:\n.*){3}-三行
  • \n-新行
  • .*-除換行符以外的任何零個或多個字符,盡可能多
  • \K-匹配重置運算符,用于從匹配內存緩沖區中刪除到目前為止匹配的文本
  • \bDB_DATABASE\b-一個完整的單詞DB_DATABASE

注意:如果您的行尾是混合的或未知的,您應該將模式中所有出現的\n替換為\R\R匹配任何行尾序列)。

主站蜘蛛池模板: 夜色阁亚洲一区二区三区| 精品国产一区二区三区久久久狼 | 亚洲一区中文字幕在线电影网| 濑亚美莉在线视频一区| 亚洲AV日韩AV天堂一区二区三区| 四虎精品亚洲一区二区三区| 亚洲av乱码中文一区二区三区| 久久99精品一区二区三区| 国产精品一区二区久久精品无码 | 亚洲日韩精品一区二区三区| 国产拳头交一区二区| 在线免费视频一区| 亚洲精品国产suv一区88| ...91久久精品一区二区三区| 亚洲AV综合色区无码一区爱AV| 在线观看免费视频一区| 国产精品一区三区| 本免费AV无码专区一区| 国产A∨国片精品一区二区| 性色AV 一区二区三区| 一区二区三区免费精品视频| V一区无码内射国产| 久久一区二区免费播放| 狠狠色婷婷久久一区二区三区 | 久久精品无码一区二区无码| 无码精品一区二区三区免费视频 | 无码国产精品一区二区免费I6| 最新欧美精品一区二区三区| 欧美日韩精品一区二区在线观看| 国产午夜精品片一区二区三区| 人妖在线精品一区二区三区| 国产精品久久久久久麻豆一区| 无码人妻精品一区二区三区99性| 五十路熟女人妻一区二区| 最新中文字幕一区| 国产激情无码一区二区三区| 精品久久一区二区三区| 国产精品一区二区久久| 国产成人精品视频一区| 国产一区二区不卡在线播放| 无码人妻精品一区二区三区夜夜嗨 |