我有一个包含 Copyright: 'any length of unknown string here',
的长字符串
我应该写什么正则表达式来完全匹配字符串中的子字符串?
我试过这个preg_replace('/Copyright:(.*?)/', 'mytext', $str);
,但它不起作用,它只匹配Copyright:
答案 0 :(得分:3)
模式结尾处的延迟量化模式在*?
的情况下始终不匹配,在+?
的情况下仅匹配1个字符,即将匹配尽可能少的字符返回有效的匹配。
你需要确保通过将它们放入模式来到达',
:
'/Copyright:.*?\',/'
^^^
答案 1 :(得分:0)
您的论坛中的?
(.*?)
会使此阻止lazy,即匹配尽可能少的字符。删除它可以解决它。
Copyright:(.*)',
但是,这会匹配同一行中的所有内容。如果您在同一行中有文本,请确保进一步限制它。我下面的截图只是将()
分组以便于您查看,您可以不使用括号。
我通常使用Regxr.com来测试我的正则表达式,还有许多其他类似的在线工具,请注意这个在UX中很棒,但不支持lookbehind。