我知道标题不是最清晰的,但我不知道如何更好地使用它。
我想做的是在一个组中捕获输入的任何内容,除非它周围有一个特定的结构,在这种情况下,只需丢弃该结构并保留其余内容
我将举几个例子。假设结构是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((.*?))