如何使用preg_match正则匹配字符串中最后一个by后的作者内容
正则实现方案
核心思路
利用正则的贪婪匹配特性,自动定位到最后一个by (by加空格)的位置,直接提取后续符合规则的作者内容:
.*贪婪匹配所有字符,直到最后一个by出现的位置\w原生匹配字母、数字、下划线,正好符合作者的字符限制要求- 末尾锚定
$确保匹配的是字符串末尾的作者内容
正则表达式
最终使用的正则为:/.*by\s(\w*)$/
完整实现代码
<?php $books = ['Big Blue Book by Steven', 'Dance by her by Mike', 'One day by by by', 'Hiphop Party by DJ340_Cool', ' by Paul12', 'by jasonB']; foreach ($books as $book) { preg_match('/.*by\s(\w*)$/', $book, $matches); // 兼容极端空情况,无匹配时输出空 $author = $matches[1] ?? ''; echo $author . PHP_EOL; }
输出结果
运行上述代码得到的输出和预期结果完全一致:
Steven Mike by DJ340_Cool Paul12 jasonB
内容的提问来源于stack exchange,提问作者Zoey Malkov
相关产品推荐
相关产品推荐

