正则表达式匹配替换的问题

需求:

正则表达式匹配替换的问题
匹配出其中的 斗破苍穹 第六章 恐怖如斯 这句话

对正则不太熟,我的逻辑是匹配“换行 * 第*章 * 换行”,但不知道怎么写出来啊,查了下的Unicode编码是\u7b2c的Unicode的编码是\u7ae0

谢谢大佬

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
<?php
$string = '我是第一行
时间简史 第二章 空间和时间
作者:霍金
我是第四行';

if(preg_match('/(\S+)\s(第(.*?)章)\s(\S+)/s', $string, $match)){
    print_r($match);
}

/*
Array
(
    [0] => 时间简史 第二章 空间和时间
    [1] => 时间简史
    [2] => 第二章
    [3] => 二
    [4] => 空间和时间
)
*/
4年前 评论
讨论数量: 4
<?php
$string = '我是第一行
时间简史 第二章 空间和时间
作者:霍金
我是第四行';

if(preg_match('/(\S+)\s(第(.*?)章)\s(\S+)/s', $string, $match)){
    print_r($match);
}

/*
Array
(
    [0] => 时间简史 第二章 空间和时间
    [1] => 时间简史
    [2] => 第二章
    [3] => 二
    [4] => 空间和时间
)
*/
4年前 评论

@likunyan 哭了,谢谢大佬还有个问题,您看看能不能指导下。例子:

file
需求:

去掉其中的不正常换行,意思就是去掉不是标点符号结尾的换行,我写的是

$text=preg_replace("/[^。?!……)」】”]\r\n\r\n/",'',$txt);

匹配结果出现了问题,匹配处的前一个字符变成了问号。

file

4年前 评论
<?php
$text = '团结!

富强。

有爱

民主!';

$newText = '';

if(preg_match_all('/(.*?)(\s{1,2}|$)/', $text, $match)){
    $textArray = $match[1];
    $br = $match[2];
    array_pop($textArray);
    array_pop($br);

    foreach($textArray as $key => $line){
        $lastCharOfLine = mb_substr($line, -1,1);
        if(in_array($lastCharOfLine, ['!', '!', '.', '。'])){
            $newText .= $line . $br[$key];
        }
    }

    var_dump($newText); 
}
4年前 评论

@likunyan 谢谢大佬,第二个问题已经解决了

preg_replace("/([^。?!……)」】”])(\r\n\r\n)/",'$1',$txt);
4年前 评论
小李世界 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!