我有以下文字:
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
以上内容将仅替换最后一个实例。如何查看四个节中的所有四个实例已被替换。
我有很多这样的节
答案 0 :(得分:1)
您可以尝试以下方法:
ZKL\n(?=.*PXY\n\n)
它与ZKL匹配,后跟一个新行,然后检查是否存在一堆非换行字符,然后是PXY,然后是2个新行。
您可以将其替换为空格。
请注意,要使此节适用于最后一个节,您需要在文件末尾至少有两行新的行。
答案 1 :(得分:0)
此正则表达式似乎可以使用PCRE。我不确定sublimetext3,可以尝试使用此正则表达式吗?
ZKL\n(?=.*\n\n)
并将其替换为一个空格。
注意:我在最后一段之后插入了两行,以便正则表达式也适用于最后一段。
编辑:
如果要进一步将PXY线与上方的两行合并,可以使用ZKL\n
并将其替换为空格。
但是,如果您想将所有四行合并为一个,最后删除ZKL和PXY,则可以使用此正则表达式,
(ZKL|PXY(\n))\n
并用\2\2
答案 2 :(得分:0)
此正则表达式应完成以下工作:
(.+ZKL\n.+ZKL\n.+ZKL)\n(.+PXY)
正则表达式匹配any char
到'ZKL\n'
之间的任意数量。重复三次,并将其存储在Group 1
中。
然后,它匹配'PXY'
内的任意数量的任何字符,该字符存储在Group 2
中。
现在您替换为:
$1$2
或某些语言:\1\2
这将连接最后两行。
您应该设置global
标志。