一尘不染

正则表达式,查找不包括定界符的两个字符之间包含的字符串

regex

我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。

一个简单的例子应该会有所帮助:

目标:提取方括号之间的子字符串,而不返回括号本身。

基本字串:This is a test string [more or less]

如果我使用以下规则。前任。

\ [。*?\]

比赛是[more or less]。我只需要得到more or less(没有括号)。

有可能做到吗?


阅读 345

收藏
2021-04-16

共1个答案

一尘不染

简单易行:

(?<=\[)(.*?)(?=\])

从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:

前面有一个[未捕获(向后看);
一个非贪婪的捕获群体。停在第一个]是不贪心的;和
后跟一个未捕获的](超前)。
另外,您也可以捕获方括号之间的内容:

\[(.*?)\]

并返回第一个捕获的组,而不是整个匹配项。

2021-04-16