[英]RegEx for no whitespace at the beginning and end but allows all special characters , spaces , lowercase and uppercase alphabet and numbers in between
[英]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
這是正則表達式的細分:
首先,我們從積極的回顧開始(?<= )
這將確保緊隨其后的模式將在內部模式之前,但不會將其包含在匹配項中。
在這種情況下,我們希望我們的匹配模式前面有%%[和任何其他字符%%\[(\s|.)*
因此,我們的 Positive Lookbehind 的結果代碼是
(?<=%%\[(\s|.)*)
接下來是我們實際想要匹配的模式,在我們的 Lookabehind 之后,以及(劇透警報),在我們稍后定義的 Lookahead 之前。
在這種情況下,這只是任何空白字符,所以我們的模式將是
\s
(是的,我只是注意到我們在原來的答案中甚至不需要 *)
與我們在表達式開頭使用 Lookbehind 所做的類似,我們現在需要一個Positive Lookahead (?= )
這是為了確保我們的空格后跟任何字符和]%% (\s|.)*\]%%
。
所以這是我們的結果 Lookahead:
(?=(\s|.)*\]%%)
把所有東西放在一起,你就有了正則表達式!
(?<=%%\[(\s|.)*)\s(?=(\s|.)*\]%%)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.