簡體   English   中英

正則表達式刪除空白行,但保留新行

[英]Regex remove blank lines, but leave new line

我正在使用此正則表達式刪除空白行:

(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+

在php中:

$search = array(
            '@( |\t|\f)+@', // Shorten multiple whitespace sequences
            '@^\s+|\s+$@',  // Trim lines
            '@(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+@'    //Remove blank lines
            );
$replace = array(' ','',"\r\n");
$string = preg_replace($search, $replace, $string);

但是我對此代碼有一些問題:
原版的:

 <script type="text/javascript">
//<![CDATA[
iCart.init({
    title: 'Aggiungi',
    cart: 'Carrello',
....
</script>

更換后:

<script type="text/javascript">
//<![CDATA[iCart.init({
title: 'Aggiungi',
cart: 'Carrello',
....
</script>

我正在嘗試獲得:

<script type="text/javascript">
//<![CDATA[
iCart.init({
title: 'Aggiungi',
cart: 'Carrello',
....
</script>

我已經使用regex101( FIDDLE )做了一些測試,它給了我正確的結果,但是我不能在真正的環境中實現相同的目標


編輯
更改查找正則表達式(修剪產生了一些問題):

$search = array(
                 '@( |\t|\f)+@',    // Shorten multiple whitespace sequences
                 '@^\s+|[ \t]+$@gmi'    //Remove blank lines
                );
$replace = array(' ','');
$string = preg_replace($search, $replace, $string);

但是還是有問題

我想這就是您想要的: ^\\s+


采用:

$string = preg_replace('/^\s+/m', '', $string);

說明:

  • ^使用m多行修飾符錨定到新行的開頭
  • \\s+查找1+個空格( [\\r\\n\\t\\f ] )字符; 這可能是整個空白行,也可能只是前一個縮進

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM