正则表达式以查找两个字符之间包含的字符串,同时排除分隔符

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

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

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

基本字符串这是一个测试字符串[或多或少]

如果我使用以下注册表。前

\[.*?\]

匹配项是[或多或少]。我只需要获得或多或少的(不带括号)

有可能吗

简单易行:

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

从技术上讲,就是使用lookaheads和lookbehinds。请参阅前向和后向零宽度断言。该模式包括:

  • 前面有一个[未捕获的](查找)
  • 一个不贪婪的被俘虏群体。一开始就停下来是不贪婪的];及
  • 后跟一个未捕获的[向前看]

或者,您可以只捕获方括号之间的内容:

\[(.*?)\]

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

发表评论