Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
regex如何在多行搜索中查找和替换多个实例_Regex_Sublimetext3 - Fatal编程技术网

regex如何在多行搜索中查找和替换多个实例

regex如何在多行搜索中查找和替换多个实例,regex,sublimetext3,Regex,Sublimetext3,我有以下案文: vyāsa-prasādāc chrutavānZKL etad guhyam ahaṁ paramZKL yogaṁ yogeśvarāt kṛṣṇātZKL sākṣāt kathayataḥ svayamPXY rājan saṁsmṛtya saṁsmṛtyaZKL saṁvādam imam adbhutamZKL keśavārjunayoḥ puṇyaṁZKL hṛṣyāmi ca muhur muhuḥPXY tac ca saṁsmṛtya saṁsmṛty

我有以下案文:

vyāsa-prasādāc chrutavānZKL
etad guhyam ahaṁ paramZKL
yogaṁ yogeśvarāt kṛṣṇātZKL
sākṣāt kathayataḥ svayamPXY

rājan saṁsmṛtya saṁsmṛtyaZKL
saṁvādam imam adbhutamZKL
keśavārjunayoḥ puṇyaṁZKL
hṛṣyāmi ca muhur muhuḥPXY

tac ca saṁsmṛtya saṁsmṛtyaZKL
rūpam aty-adbhutaṁ hareḥZKL
vismayo me mahān rājanZKL
hṛṣyāmi ca punaḥ punaḥPXY

yatra yogeśvaraḥ kṛṣṇoZKL
yatra pārtho dhanur-dharaḥZKL
tatra śrīr vijayo bhūtirZKL
dhruvā nītir matir mamaPXY
现在我想:

vyāsa-prasādāc chrutavānZKL
etad guhyam ahaṁ paramZKL
yogaṁ yogeśvarāt kṛṣṇāt sākṣāt kathayataḥ svayamPXY

rājan saṁsmṛtya saṁsmṛtyaZKL
saṁvādam imam adbhutamZKL
keśavārjunayoḥ puṇyaṁ hṛṣyāmi ca muhur muhuḥPXY

tac ca saṁsmṛtya saṁsmṛtyaZKL
rūpam aty-adbhutaṁ hareḥZKL
vismayo me mahān rājan hṛṣyāmi ca punaḥ punaḥPXY

yatra yogeśvaraḥ kṛṣṇoZKL
yatra pārtho dhanur-dharaḥZKL
tatra śrīr vijayo bhūtir dhruvā nītir matir mamaPXY
我想把每一节的最后两行合并起来

我正在用崇高的文字:

find: (?s)ZKL\n((?!.*ZKL).*PXY)
replace:  \1

(?s)  for multi line search
ZKL\n is ZKL and new line
((?!.*ZKL)  to search from ZKL which is before PXY otherwse there are many ZKL
.*PXY everything till PXY
以上内容将仅替换最后一个实例。如何看到四节中的所有四个实例都被替换


我有很多这样的诗节

这个正则表达式似乎很管用。我不太清楚SublimiteText3,你能试试这个正则表达式吗

ZKL\n(?=.*\n\n)
并将其替换为一个单独的空间

注意:我在最后一段后插入了两行新行,这样正则表达式也适用于最后一段

编辑: 如果您想将PXY行与上面的两行进一步组合,可以使用
ZKL\n
并将其替换为空格

但如果您想将所有四行合并为一行,最后删除ZKL和PXY,您可以使用这个正则表达式

(ZKL|PXY(\n))\n
并用
\2\2

您可以尝试以下方法:

ZKL\n(?=.*PXY\n\n)
它匹配ZKL,后跟一个新行,然后检查是否有一堆非新行字符,后跟PXY,后跟2个新行

您可以将其替换为一个空格

请注意,要在最后一节执行此操作,您需要在文件末尾至少有两行新行


此正则表达式应完成以下工作:

(.+ZKL\n.+ZKL\n.+ZKL)\n(.+PXY)
正则表达式匹配任意数量的
任意字符
'ZKL\n'
。此操作重复三次,并存储在
组1

然后,它匹配任何数量的字符,最多为
“PXY”
,该字符存储在
组2中

现在替换为:

$1$2
或某些语言:
\1\2

这将连接最后两行


您应该设置
global
标志。

在连接最后两行之后,现在我还想将PXY上方的行与上面的两行连接起来PXY@SanthoshYedidi你能告诉我第一节你希望得到什么吗?@ssc-hrep3@Santhosh:我已经更新了我的答案,以满足你在另一个答案的评论中提到的要求。希望有帮助。如果您还面临任何问题或有任何疑问,请告诉我。