簡體   English   中英

正則表達式為 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 個空格/新行/tabindents?

提前致謝!

我相信這就是你想要的:

(?<=%%\[(\s|.)*)\s*(?=(\s|.)*\]%%)

https://regex101.com/r/EWhbuX/1

編輯

這是正則表達式的細分:

1.

首先,我們從積極的回顧開始(?<= )

這將確保緊隨其后的模式將在內部模式之前,但不會將其包含在匹配項中。

在這種情況下,我們希望我們的匹配模式前面有%%[和任何其他字符%%\[(\s|.)*

因此,我們的 Positive Lookbehind 的結果代碼是

(?<=%%\[(\s|.)*)

2.

接下來是我們實際想要匹配的模式,在我們的 Lookabehind 之后,以及(劇透警報),在我們稍后定義的 Lookahead 之前。

在這種情況下,這只是任何空白字符,所以我們的模式將是

\s

(是的,我只是注意到我們在原來的答案中甚至不需要 *)

3.

與我們在表達式開頭使用 Lookbehind 所做的類似,我們現在需要一個Positive Lookahead (?= )

這是為了確保我們的空格后跟任何字符和]%% (\s|.)*\]%%

所以這是我們的結果 Lookahead:

(?=(\s|.)*\]%%)

4.

把所有東西放在一起,你就有了正則表達式!

(?<=%%\[(\s|.)*)\s(?=(\s|.)*\]%%)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM