正则匹配梵语诗文:如何提取完整段落及指定编号诗文?
梵语诗文正则提取方案
一、带换行文本提取完整诗节
原正则.* चैव यत् .*仅匹配单行内容,若要提取以॥结尾的完整诗节,可使用如下正则:
^(.* चैव यत् .*\n.*॥.*)$
- 逻辑说明:
^定位诗节起始位置.* चैव यत् .*匹配包含目标短语的第一行内容\n匹配换行符.*॥.*匹配带编号的第二行(以॥结尾)$定位诗节结束位置
在支持多行匹配的工具(如Python开启re.MULTILINE模式)中执行,即可提取完整诗节:
अभिसन्धाय तु फलं दम्भार्थमपि चैव यत् । इज्यते भरतश्रेष्ठ तं यज्ञं विद्धि राजसम् ॥ 17.12॥ सत्कारमानपूजार्थं तपो दम्भेन चैव यत् । क्रियते तदिह प्रोक्तं राजसं चलमध्रुवम् ॥ 17.18॥
二、无换行文本提取指定编号诗节
针对无换行的纯文本,要提取编号为17.12和17.18的诗节,可直接以目标编号为锚点匹配内容:
正则表达式
(.*?॥ 17\.12॥)|(.*?॥ 17\.18॥)
- 逻辑说明:
.*?采用非贪婪匹配,避免跨诗节抓取无关内容॥ 17\.12॥和॥ 17\.18॥作为精准锚点,定位目标诗节的结尾- 通过分组同时匹配两个目标编号对应的内容
提取结果
将匹配到的有效内容拼接后,可得到:
अभिसन्धाय तु फलं दम्भार्थमपि चैव यत् । इज्यते भरतश्रेष्ठ तं यज्ञं विद्धि राजसम् ॥ 17.12॥ सत्कारमानपूजार्थं तपो दम्भेन चैव यत् । क्रियते तदिह प्रोक्तं राजसं चलमध्रुवम् ॥ 17.18॥
Python代码示例
import re text = "दृष्ट्वा तु पाण्डवानीकं व्यूढं दुर्योधनस्तदा । आचार्यमुपसङ्गम्य राजा वचनमब्रवीत् ॥ १-२॥ पश्यैतां पाण्डुपुत्राणामाचार्य महतीं चमूम् । व्यूढां द्रुपदपुत्रेण तव शिष्येण धीमता ॥ १-३॥ अन्ये च बहवः शूरा मदर्थे त्यक्तजीविताः । नानाशस्त्रप्रहरणाः सर्वे युद्धविशारदाः ॥ १-९॥ अपर्याप्तं तदस्माकं बलं भीष्माभिरक्षितम् । पर्याप्तं त्विदमेतेषां बलं भीमाभिरक्षितम् ॥ १-१०॥ अभिसन्धाय तु फलं दम्भार्थमपि चैव यत् । इज्यते भरतश्रेष्ठ तं यज्ञं विद्धि राजसम् ॥ 17.12॥ अयनेषु च सर्वेषु यथाभागमवस्थिताः । भीष्ममेवाभिरक्षन्तु भवन्तः सर्व एव हि ॥ १-११॥ सत्कारमानपूजार्थं तपो दम्भेन चैव यत् । क्रियते तदिह प्रोक्तं राजसं चलमध्रुवम् ॥ 17.18॥" pattern = re.compile(r'(.*?॥ 17\.12॥)|(.*?॥ 17\.18॥)') matches = pattern.findall(text) result = ' '.join([''.join(match) for match in matches if any(match)]) print(result)
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

