删除包含空格的新行

时间:2018-02-20 10:14:38

标签: php regex

我有一个文本文件test.txt:

this is test line
  another line
2146554
 145648
    DATE 2017-12-12

USR-PASSWORD *\#5%*sdfdaw*eewaqd*

 TYPE ---NULLS--- TBL
PWD-TOD 2018-01-01
 EDBS
  18/01/02 KEYFROM 


 SDBS

如果您看到空行,则它们实际上包含3个空格。我已经能够删除包含特定单词的任何行:

<?php
$file = file('test.txt'); 
$key = '17.2';
$cleaned = array();

//CLEANUP START
$unwanted_words = array(" DATE", "USR-PASSWORD", "PWD-TOD", "KEYFROM ");
$unwanted_words_match = '(?:' . join('|', array_map(function($word) {
    return preg_quote($word, '/');
}, $unwanted_words)) . ')';

$replace_match = '/^.*' . $unwanted_words_match . '.*$[\r\n]/m';
$result = preg_replace($replace_match, '', $file);

foreach ($result as $key => $value) {
  if(!empty($value)) {
    $cleaned[] = $value;
    echo  $value . "<br />";
  }
}

?>

最后一步是删除带有3个空格的那些行。我试过了

\n[ ]{3,}

但我的知识结束了。

文字档案:https://jsfiddle.net/adsj0rw9/1/

1 个答案:

答案 0 :(得分:0)

正则表达式中的{Min,}表示匹配 至少 Min时间。要准确匹配三个空格字符,您必须删除括号表示法量词中的逗号,^[ ]{3}。然后你应该寻找任何以下的换行符来取消它:

(?m)^   $\R?