正则表达式 select 特殊外壳之间的所有空格
Regex to select all spaces between a special enclosure
我正在尝试为 Javascript 编写一个正则表达式,它可以 select AMPScript
括号之间的所有空格,Lang 的语法是这样的
%%[
set @truth = 'this is amp'
IF @truth == 'this is amp' THEN
set @response = 'amp rocks'
ELSE
set @response = '️...'
ENDIF
]%%
到目前为止,我可以使用这个表达式 select 给定括号内的所有字符:
%%\[(\s|.)*?\]%%
但是这个select里面所有的字符都是圈内的,有没有什么方法可以只selectspaces/newlines/tabindents?
提前致谢!
我相信这就是你想要的:
(?<=%%\[(\s|.)*)\s*(?=(\s|.)*\]%%)
https://regex101.com/r/EWhbuX/1
编辑
下面是正则表达式的细分:
1.
首先我们从正面回顾 (?<= )
开始
This will make sure that the pattern that's following this, will be preceded by the pattern inside, but will not be include it in the matches.
在这种情况下,我们希望我们的匹配模式前面有 %%[ 和任何其他字符 %%\[(\s|.)*
因此,Positive Lookbehind 的结果代码是
(?<=%%\[(\s|.)*)
2.
接下来是我们实际想要在 Lookabehind 之后匹配的模式,以及(剧透警报),在我们稍后定义的 Lookahead 之前。
在这种情况下,这只是 任何空格 字符,因此我们的模式将是
\s
(是的,我只是注意到我们在原来的答案中甚至不需要 *)
3.
类似于我们在表达式开头使用 Lookbehind 所做的,我们现在需要一个 Positive Lookahead (?= )
这是为了确保我们的空格后跟任何字符和 ]%% (\s|.)*\]%%
.
所以这是我们的结果 Lookahead:
(?=(\s|.)*\]%%)
4.
把所有东西放在一起,你就有了正则表达式!
(?<=%%\[(\s|.)*)\s(?=(\s|.)*\]%%)
我正在尝试为 Javascript 编写一个正则表达式,它可以 select AMPScript
括号之间的所有空格,Lang 的语法是这样的
%%[
set @truth = 'this is amp'
IF @truth == 'this is amp' THEN
set @response = 'amp rocks'
ELSE
set @response = '️...'
ENDIF
]%%
到目前为止,我可以使用这个表达式 select 给定括号内的所有字符:
%%\[(\s|.)*?\]%%
但是这个select里面所有的字符都是圈内的,有没有什么方法可以只selectspaces/newlines/tabindents?
提前致谢!
我相信这就是你想要的:
(?<=%%\[(\s|.)*)\s*(?=(\s|.)*\]%%)
https://regex101.com/r/EWhbuX/1
编辑
下面是正则表达式的细分:
1.
首先我们从正面回顾 (?<= )
This will make sure that the pattern that's following this, will be preceded by the pattern inside, but will not be include it in the matches.
在这种情况下,我们希望我们的匹配模式前面有 %%[ 和任何其他字符 %%\[(\s|.)*
因此,Positive Lookbehind 的结果代码是
(?<=%%\[(\s|.)*)
2.
接下来是我们实际想要在 Lookabehind 之后匹配的模式,以及(剧透警报),在我们稍后定义的 Lookahead 之前。
在这种情况下,这只是 任何空格 字符,因此我们的模式将是
\s
(是的,我只是注意到我们在原来的答案中甚至不需要 *)
3.
类似于我们在表达式开头使用 Lookbehind 所做的,我们现在需要一个 Positive Lookahead (?= )
这是为了确保我们的空格后跟任何字符和 ]%% (\s|.)*\]%%
.
所以这是我们的结果 Lookahead:
(?=(\s|.)*\]%%)
4.
把所有东西放在一起,你就有了正则表达式!
(?<=%%\[(\s|.)*)\s(?=(\s|.)*\]%%)