PHP搜索和替换正则表达式模式

PHP搜索和替换正则表达式模式,php,regex,matching,Php,Regex,Matching,我试图获取一个通过正则表达式模式({$…})匹配的字符串。但我不希望括号和$sign被退回 比如说 {$Testpath}/Testlink 应该回来 Testpath 我的正则表达式模式现在看起来是这样的: ^{\$.*}$ 请尝试以下正则表达式: ^\{\$\K[^}]*(?=\}) 这个表达式先匹配字符串的开头^然后是一个文本{然后是一个文本$,然后忽略那些使用\K锚点的字符,然后匹配一个或多个非}的字符,然后它向前看(?=\}) 您可能不需要行尾锚定$,因为您尝试匹配的文本可能

我试图获取一个通过正则表达式模式({$…})匹配的字符串。但我不希望括号和$sign被退回

比如说

{$Testpath}/Testlink
应该回来

Testpath
我的正则表达式模式现在看起来是这样的:

^{\$.*}$

请尝试以下正则表达式:

^\{\$\K[^}]*(?=\})

这个表达式先匹配字符串的开头
^
然后是一个文本
{
然后是一个文本
$
,然后忽略那些使用
\K
锚点的字符,然后匹配一个或多个非
}
的字符,然后它向前看
(?=\})

您可能不需要行尾锚定
$
,因为您尝试匹配的文本可能不在字符串末尾,并且您可能不需要行首锚定
^
原因正好相反,即您尝试匹配的模式可能不在字符串或行的开头


我认为您应该删除
^
$
并使用全局修饰符。

为什么使用
^
$
-是否只有当整个包含字符串与规则匹配时才应捕获值?一个^{\$(.*)将在匹配数组中为您提供匹配项。您不需要正则表达式中的最后一个$,因为它匹配字符串的结尾,但您搜索的值不在结尾。@jannishank不客气,请尽可能接受答案。