使用单个组捕获除特定结构之外的所有内容

  • 本文关键字:结构 单个组 regex
  • 更新时间 :
  • 英文 :


我知道标题不是最清晰的,但我不知道如何更好地使用它。

我想做的是在一个组中捕获输入的任何内容,除非它周围有一个特定的结构,在这种情况下,只需丢弃该结构并保留其余内容

我将举几个例子。假设结构是cap(.*),我想要以下内容:

输入:

"cap(text)"
"cap(text"
"text)"

输出:

"text"
"cap(text"
"text)"

我被之类的东西卡住了

(?:cap()?(.*)

但是,它不同时考虑";cap("one_answers"(";,因此实施例1和2不起作用。

还有

cap((.*))|(.*)

不起作用,因为它根据情况将内容分为两组。

您可以替换

cap((.*?))

带有

$1

请参阅regex演示。

这里,cap(匹配cap((.*?)捕获组匹配除换行符之外的任何零个或多个字符,尽可能少,并且)部分匹配)$1是组1值的占位符。

如果cap必须作为一个完整的单词匹配,则在其前面加上单词边界b:

bcap((.*?))

最新更新