间距在正则表达式中混乱

Zee*_*Zee 5 regex

我有以下正则表达式

var string_regex=(\s*[\{\[]?\%?[\s]*)[\@A-Za-z1-9_\.\s\+\-\*\\]*([\s\*]*=[\s\*\$]*[\{\"]?)[\@A-Za-z1-9_\.\s\+\-\*\\]*(\s*[\}\"]?)([\}\]\%\s]*)
Run Code Online (Sandbox Code Playgroud)

其中,[\@A-Za-z1-9_\.\s\+\-\*\\]*将最终由我的程序一个字符串,它被写入到利用文件被替换$1, $2, $3 and $4如下:

val newLineToBeReplacedOrAdded = "$1" + "set type cookies" + "$2" + "sugar cookies" + "$3" + "$4"
Run Code Online (Sandbox Code Playgroud)

我正在测试它的字符串是

{% set type cookies = "sugar cookies" %}
Run Code Online (Sandbox Code Playgroud)

它恰当地匹配.但是,我遇到的问题是,当我将其写入文件时,间距不会保留在等号旁边,所以我最终得到了

{% set type cookies= "sugar cookies" %}
Run Code Online (Sandbox Code Playgroud)

这是一个非常小的差异,但我很欣赏有关如何进一步改进表达以防止这种情况的反馈.

这是正则表达式的链接!

我认为这是一个特别的问题 [\@A-Za-z1-9_\.\s\+\-\*\\]*

lin*_*use 3

使其在 = 之前的空格上进行非贪婪匹配。

[\@A-Za-z1-9_\.\s\+\-\*\\]*?
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/yN4mX0/3