首页 > 解决方案 > 只获得第一场比赛

问题描述

我只想获得字符串的第一个匹配项。

(?<=\[TITLE.+)suffix=[^|\]]+\|?

如果我的字符串是[TITLE|suffix=my value|prefix=another value],一切都很好,我只得到 1 个匹配项,但如果字符串是[TITLE|suffix=my value|prefix=another value][DYNAMIC|suffix=my value|prefix=another value],我得到 2 个匹配项,但我需要的只是第一个匹配项。

见这里:https ://regexr.com/5h0t8

标签: regex

解决方案


您可以通过排除匹配字符[]表示单独部分的开始和停止而不是使用点来匹配任何字符来使匹配更加具体。

当您有多个匹配项时,您可以选择返回第一个匹配项,但您可以使模式更精确以保持在产生单个匹配项的边界内。

在这种情况下,您可以排除匹配]或正如@Wiktor Stribiżew 指出的那样,排除开头[

(?<=\[TITLE[^\]]*)suffix=[^|\]]+\|?

正则表达式演示


推荐阅读