在关闭正则表达式的部分时获得第一场比赛

时间:2014-12-28 13:49:48

标签: regex

我必须使用带有字符串的正则表达式#34; [%" "%]"和任何文字或""在里面。例如:

输入:dsafsdfadsaffsdadsaffadsaf[%sadsad[%]%%]fdfsadfsad%]fsasdf

输出:[%sadsad[%]

我已经写过表达式 - \[%(.\n*)*%\],但它需要%]的最后一个。

输出:[%sadsad[%]%%]fdfsadfsad%]

有没有人知道如何获得第一场比赛?

2 个答案:

答案 0 :(得分:1)

.\n置于由逻辑OR |运算符分隔的捕获或非捕获组中,并将其设置为非贪婪。

\[%(.|\n)*?%\]

你可以这样做。

\[%[\S\s]*?%\]

[\S\s]*?非贪婪地匹配任何空格或非空格字符。

答案 1 :(得分:0)

\[%[^\]]*%\]

您可以尝试将此字符串设置为首先关闭%]。请参阅演示。

https://regex101.com/r/gX5qF3/5

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  \[%                       '['%
--------------------------------------------------------------------------------
  [^\]]*                   any character except: '\]' (0 or more
                           times (matching the most amount possible))
--------------------------------------------------------------------------------
  %\]                       %']'