Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查看atom.io regex finf中的断言并替换_Regex_Atom Editor - Fatal编程技术网

查看atom.io regex finf中的断言并替换

查看atom.io regex finf中的断言并替换,regex,atom-editor,Regex,Atom Editor,我必须在一个非常大(>440000行)的文本文件中找到一些模式,如下所示: negative,10946,N: 10947,P: 59316,7.4346858,52.3209003 145930 24941,N: 54399,P: 24940,7.4308326,52.323004 145943 positive,57656,N: 57658,P: 57655,9.7569868,53.7176063 131516 57694,N: 57695 9.677158,53.6762726 131

我必须在一个非常大(>440000行)的文本文件中找到一些模式,如下所示:

negative,10946,N: 10947,P: 59316,7.4346858,52.3209003
145930
24941,N: 54399,P: 24940,7.4308326,52.323004
145943

positive,57656,N: 57658,P: 57655,9.7569868,53.7176063
131516
57694,N: 57695
9.677158,53.6762726
131587
(?<=^.[0-9]{4,7})\n(?=[0-9]{4,7})
(^.[0-9]{4,7})(\n)([0-9]{4,7})
或者,换句话说,是一个整数,之后是换行符,最后是另一个整数

问题在于第2行和第3行之间的新线#6和#7:我必须在这里添加第二个\n并添加文本“两者”。我已经成功地编写了一个正则表达式,它可以发现这些新行的出现:

^.[0-9]{4,7}\n[0-9]{4,7}
这个正则表达式查找所有出现的换行符。但是:我真的不知道应该用什么替换这些文本部分。我想让这两个数字保持不变,但在已经存在的\n后面插入一个\n和“两者”

通常,我会使用如下环视断言:

negative,10946,N: 10947,P: 59316,7.4346858,52.3209003
145930
24941,N: 54399,P: 24940,7.4308326,52.323004
145943

positive,57656,N: 57658,P: 57655,9.7569868,53.7176063
131516
57694,N: 57695
9.677158,53.6762726
131587
(?<=^.[0-9]{4,7})\n(?=[0-9]{4,7})
(^.[0-9]{4,7})(\n)([0-9]{4,7})

(?好的,在研究了一个类似的SO问题之后,我发现Atom支持Perl风格的捕获组占位符,所以我所要做的就是像这样扩展我的正则表达式:

negative,10946,N: 10947,P: 59316,7.4346858,52.3209003
145930
24941,N: 54399,P: 24940,7.4308326,52.323004
145943

positive,57656,N: 57658,P: 57655,9.7569868,53.7176063
131516
57694,N: 57695
9.677158,53.6762726
131587
(?<=^.[0-9]{4,7})\n(?=[0-9]{4,7})
(^.[0-9]{4,7})(\n)([0-9]{4,7})
…并将其用作替换字符串:

$1\n\nboth,$3

这仍然是一个比环顾四周更麻烦的语法,但至少它是有效的。

好的,在研究了一个类似的SO问题后,我发现Atom支持Perl风格的捕获组占位符,所以我所要做的就是像这样扩展我的正则表达式:

negative,10946,N: 10947,P: 59316,7.4346858,52.3209003
145930
24941,N: 54399,P: 24940,7.4308326,52.323004
145943

positive,57656,N: 57658,P: 57655,9.7569868,53.7176063
131516
57694,N: 57695
9.677158,53.6762726
131587
(?<=^.[0-9]{4,7})\n(?=[0-9]{4,7})
(^.[0-9]{4,7})(\n)([0-9]{4,7})
…并将其用作替换字符串:

$1\n\nboth,$3
它的语法仍然比环顾四周要麻烦得多,但至少它可以工作。:)