Php正则表达式匹配子字符串,后跟任意长度的字符,然后是逗号

时间:2016-08-09 13:17:40

标签: php regex preg-replace

我有一个包含 Copyright: 'any length of unknown string here', 的长字符串 我应该写什么正则表达式来完全匹配字符串中的子字符串?

我试过这个preg_replace('/Copyright:(.*?)/', 'mytext', $str);,但它不起作用,它只匹配Copyright:

2 个答案:

答案 0 :(得分:3)

模式结尾处的延迟量化模式在*?的情况下始终不匹配,在+?的情况下仅匹配1个字符,即将匹配尽可能少的字符返回有效的匹配。

你需要确保通过将它们放入模式来到达',

'/Copyright:.*?\',/'
               ^^^

请参阅the regex demo

答案 1 :(得分:0)

您的论坛中的? (.*?)会使此阻止lazy,即匹配尽可能少的字符。删除它可以解决它。

Copyright:(.*)',

但是,这会匹配同一行中的所有内容。如果您在同一行中有文本,请确保进一步限制它。我下面的截图只是将()分组以便于您查看,您可以不使用括号。

Demo

我通常使用Regxr.com来测试我的正则表达式,还有许多其他类似的在线工具,请注意这个在UX中很棒,但不支持lookbehind