替换PHP中不后跟日期的换行符

替换PHP中不后跟日期的换行符,php,regex,Php,Regex,我尝试使用PHP逐行解析字符串。通常,每个数据集由13个由制表符分隔的值组成。其中一个值包含注释,其中可能有换行符(我无法避免-数据已导入)。如果是这样,我就不能在我的行中循环,因为一个数据集不再包含13个值,它们被分割成两行 每条新线通常以2020年12月30日这样的日期开始 如何检查我的字符串中是否有不带日期的线路制动器,并将其删除 示例字符串: $input=“30.12.2020第1行\n30.12.2020第2行\n3行\n30.12.2020第4行” 在这种情况下,第2行和第3行应打

我尝试使用PHP逐行解析字符串。通常,每个数据集由13个由制表符分隔的值组成。其中一个值包含注释,其中可能有换行符(我无法避免-数据已导入)。如果是这样,我就不能在我的行中循环,因为一个数据集不再包含13个值,它们被分割成两行

每条新线通常以2020年12月30日这样的日期开始

如何检查我的字符串中是否有不带日期的线路制动器,并将其删除

示例字符串:

$input=“30.12.2020第1行\n30.12.2020第2行\n3行\n30.12.2020第4行”


在这种情况下,第2行和第3行应打印在同一行上。

您可以按照以下模式替换正则表达式:

\r?\n(?!\d{2}\.\d{2}\.\d{4})
示例脚本:

$input = "Line 1\n30.12.2020 Line 2\nLine 3\n30.12.2020Line 4";
$output = preg_replace("/\r?\n(?!\d{2}\.\d{2}\.\d{4})/", "", $input);
echo $input . "\n\n" . $output;
这张照片是:

Line 1
30.12.2020 Line 2
Line 3
30.12.2020Line 4

Line 1
30.12.2020 Line 2Line 3
30.12.2020Line 4

我投了反对票。不是因为我不想使用堆栈溢出作为提问的地方,而是因为您的问题不包含示例输入字符串,也不包含编码尝试,也不包含所需的输出。换言之,它没有一个完整的定义。这是一个需求转储。请阅读。我们需要更高质量的问题,这样堆栈溢出对研究人员来说仍然是有价值的。请在使用勺子之前从OP处获得一份报告。如果OP知道如何匹配日期子字符串,那么这个页面将简单地关闭,因为它知道如何在不同的环境中匹配新行字符。我们不知道OP知道什么,因为他们什么都没展示。也许他们知道如何匹配换行符,但他们不知道如何写一个消极的前瞻,这也是一个重复——同样,我们也不知道。