我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。
一个简单的例子应该会有所帮助:
目标:提取方括号之间的子字符串,而不返回括号本身。
基本字串:This is a test string [more or less]
This is a test string [more or less]
如果我使用以下规则。前任。
\ [。*?\]
比赛是[more or less]。我只需要得到more or less(没有括号)。
[more or less]
more or less
有可能做到吗?
简单易行:
(?<=\[)(.*?)(?=\])
从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:
前面有一个[未捕获(向后看); 一个非贪婪的捕获群体。停在第一个]是不贪心的;和 后跟一个未捕获的](超前)。 另外,您也可以捕获方括号之间的内容:
\[(.*?)\]
并返回第一个捕获的组,而不是整个匹配项。