Preg_replace 带有可选的换行符
Preg_replace with optional newlines
我目前正在努力使用正则表达式。我处理的一些字符串末尾有换行符,有些则没有。但我希望这些换行符在我添加的 html 之外。起初我的正则表达式中没有换行代码,但随后换行符在结束标记之前返回。我用当前代码修复了这个问题,但现在它不再正确处理末尾没有换行符的字符串。
所以我正在尝试更改我的代码,return 换行符存在时,但在没有换行符时也处理字符串。
我当前的代码:
preg_replace('/^(m:|maken:)(.*)([\r\n])/i', $makenblokje . '<em class="markeerroze"></em>', $regel, 1, $teller);
^^^^^^^^ ^^
我认为解决方案应该在下划线部分,但我无法用我正在寻找的结果修复它。
您可以通过在模式后面加上 ?
来使模式可选(即允许它的 0 或 1 个实例),所以这应该为您完成:
'/^(m:|maken:)(.*)([\r\n])?/i'
但我认为去掉所有进入的换行符会更容易,反正它们不会在输出中呈现。
[\r\n]
匹配 \r
或 \n
。为了匹配任何类型的换行符,使用 \R
和 ?
使其成为可选的:
preg_replace('/^(m:|maken:)(.*)(\R?)/i', $makenblokje . '<em class="markeerroze"></em>', $regel, 1, $teller);
我目前正在努力使用正则表达式。我处理的一些字符串末尾有换行符,有些则没有。但我希望这些换行符在我添加的 html 之外。起初我的正则表达式中没有换行代码,但随后换行符在结束标记之前返回。我用当前代码修复了这个问题,但现在它不再正确处理末尾没有换行符的字符串。
所以我正在尝试更改我的代码,return 换行符存在时,但在没有换行符时也处理字符串。
我当前的代码:
preg_replace('/^(m:|maken:)(.*)([\r\n])/i', $makenblokje . '<em class="markeerroze"></em>', $regel, 1, $teller);
^^^^^^^^ ^^
我认为解决方案应该在下划线部分,但我无法用我正在寻找的结果修复它。
您可以通过在模式后面加上 ?
来使模式可选(即允许它的 0 或 1 个实例),所以这应该为您完成:
'/^(m:|maken:)(.*)([\r\n])?/i'
但我认为去掉所有进入的换行符会更容易,反正它们不会在输出中呈现。
[\r\n]
匹配 \r
或 \n
。为了匹配任何类型的换行符,使用 \R
和 ?
使其成为可选的:
preg_replace('/^(m:|maken:)(.*)(\R?)/i', $makenblokje . '<em class="markeerroze"></em>', $regel, 1, $teller);