PHP搜索和替换正则表达式模式
我试图获取一个通过正则表达式模式({$…})匹配的字符串。但我不希望括号和$sign被退回 比如说PHP搜索和替换正则表达式模式,php,regex,matching,Php,Regex,Matching,我试图获取一个通过正则表达式模式({$…})匹配的字符串。但我不希望括号和$sign被退回 比如说 {$Testpath}/Testlink 应该回来 Testpath 我的正则表达式模式现在看起来是这样的: ^{\$.*}$ 请尝试以下正则表达式: ^\{\$\K[^}]*(?=\}) 这个表达式先匹配字符串的开头^然后是一个文本{然后是一个文本$,然后忽略那些使用\K锚点的字符,然后匹配一个或多个非}的字符,然后它向前看(?=\}) 您可能不需要行尾锚定$,因为您尝试匹配的文本可能
{$Testpath}/Testlink
应该回来
Testpath
我的正则表达式模式现在看起来是这样的:
^{\$.*}$
请尝试以下正则表达式:
^\{\$\K[^}]*(?=\})
这个表达式先匹配字符串的开头^
然后是一个文本{
然后是一个文本$
,然后忽略那些使用\K
锚点的字符,然后匹配一个或多个非}
的字符,然后它向前看(?=\})
您可能不需要行尾锚定$
,因为您尝试匹配的文本可能不在字符串末尾,并且您可能不需要行首锚定^
原因正好相反,即您尝试匹配的模式可能不在字符串或行的开头
我认为您应该删除
^
和$
并使用全局修饰符。为什么使用^
和$
-是否只有当整个包含字符串与规则匹配时才应捕获值?一个^{\$(.*)将在匹配数组中为您提供匹配项。您不需要正则表达式中的最后一个$,因为它匹配字符串的结尾,但您搜索的值不在结尾。@jannishank不客气,请尽可能接受答案。