正则表达式如何 select 重复模式中模式的第一个实例

Regex how to select first instance of pattern in repeating pattern

我有一个字符串,我需要在其中找到以下模式的所有实例:

{{.*Sm_.*}}

我遇到的问题是这种模式在整个字符串中重复出现,所以当我尝试通过以下方式进行非贪婪匹配时:

{{.*Sm_.*?}}

它匹配此模式从第一个实例到最后一个实例的所有内容,包括一堆我不希望它匹配的内容。基本上字符串看起来像这样:

{{.*Sm_.*}} Bunch of content {{.*Sm_.*}} More content {{.*Sm_.*}}

重复。我只想捕获与模式匹配的部分而不捕获任何其他内容。 我该怎么做?

.* 是实际的正则表达式字符,因此如果您希望模式匹配,则需要对它们进行转义。你想要的模式是这样的:{{\.\*Sm_\.\*}}

编辑: 我误解了这个问题。 Tim Biegeleisen 对您的问题有正确的答案。

以下非贪婪模式将仅针对 {{...}} 字词本身,会溢出任何内容。

\{\{[^}]*Sm_.*?\}\}

Demo