正则表达式:查找多个 %%{ANYTHING}%% 实例

3
SomeRandomText=%EXAMPLE1%,MoreRandomText=%%ONE%%!!%%TWO%%,YetMoreRandomText=%%THREE%%%FOUR%!!%FIVE%\%%SIX%%

我需要一个正则表达式,可以提取任何被'%%'包裹的内容- 因此这个正则表达式只会匹配以下内容:
  • %%ONE%%
  • %%TWO%%
  • %%THREE%%
  • %%SIX%%
我尝试了很多不同的方法,但是我确定有一种方法可以实现这个目标- 但我还在苦苦挣扎。我主要遇到的问题是它会匹配字符串中从第一个'%%'到最后一个'%%'之间的所有内容- 这不是我想要的。我认为我需要类似于向前查找的东西,但是我无法实现。

即使您的尝试不正确,展示您所尝试的内容也会有所帮助。 - Mark Byers
抱歉-我想做这个,但我今天不在办公室。谢谢回答 :) - Tom Beech
2个回答

2
你需要使用“?”修饰符进行非贪婪匹配:非贪婪匹配。
%%.*?%%

在线查看演示:rubular


@TomBeech 根据您的原始帖子,这个不符合您的要求。我主要是让它匹配字符串中从第一个 %% 到最后一个 %% 的所有内容 - 这不是我想要的。 - fidev

0

这也可以通过限制在%之间允许的内容来实现。

%%[^%]*%%

贪婪匹配比非贪婪匹配更受支持,但请注意,这不会匹配%%A%B%%。尽管如此,如果必要,可以通过一些修改来实现:

%%([^%]|%[^%])*%%

或者等价地

%%(%?[^%])*%%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接