我正在尝试将正则表达式用于最内层的"我想要的信息"该字符串中的文字:
{%%% =选择(MMGDS1,"邮轮",{%%%信息我想要%%%} %%%}
我试图用这个:
^(?!.*\%{3})\{\%{3}(.*?)\%{3}\}
但没有运气。有谁知道这样做的方法?
答案 0 :(得分:1)
如果您想要的信息不包含任何%
字符,则可以使用否定类:
%{3}([^%{}]*)%{3}
更正确的方法是使用这种格式的负向前瞻:
%%%((?:(?!%%%|[{}]).)*)%%%
我已将{}
放在不应匹配的字符内。
基本上,(?:(?!%%%|[{}]).)*
会匹配除%%%
,{
或}
以外的任何字符。
答案 1 :(得分:1)
看起来你可以做前瞻性的断言。这有效。
# {%%%((?:(?!{%%%|%%%})[\S\s])*)%%%}
{%%% # Opening delimiter '{%%%'
( # (1 start), 'The info you want'
(?: # Cluster grp start
(?! {%%% | %%%} ) # Lookahead, not delimiters '{%%%' nor '%%%}'
[\S\s] # Ok, grab another character (any)
)* # Cluster grp end, do 0 - many times
) # (1 end)
%%%} # Closing delimiter `%%%}`
答案 2 :(得分:0)
那是:
\{.*\{%{3}(.*)%{3}\}.*\}
结果:
匹配1:
{%%%=Select(MMGDS1,"cruise",{%%%The Info I want%%%}%%%}
第1组:
The Info I want