使用下面的正则表达式,我得到了单个XML元素"lesson"。
(.*?)<lesson id=(.*)[sS]*?</lesson>
但是我如何搜索具有特定内容的 XML 元素并在记事本++中标记整个 XML 元素"课程",从而我可以将 XML 元素复制到另一个文件中。
查找并标记具有以下内容的 XML 元素"课程":
<assigned_day>5</assigned_day>
XML 示例
<lesson id="LS_18300">
<periods>2</periods>
<lesson_subject id="SU_Gs"/>
<lesson_teacher id="TR_Kl"/>
<lesson_classes id="CL_MM4A"/>
<teacher_value>200000</teacher_value>
<effectivebegindate>20170814</effectivebegindate>
<effectiveenddate>20180706</effectiveenddate>
<block>2</block>
<occurence>11111FF11111FF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF1111FFF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF11111FF11111FF1111FFFF1111FFFFFFFFFFFFFFFF11111FF1F111FF111FFFF11111FFF1111FF11111FF11111FF11111FF11111FF11111FF1111F</occurence>
<times>
<time>
<assigned_day>1</assigned_day>
<assigned_period>10</assigned_period>
<assigned_starttime>1520</assigned_starttime>
<assigned_endtime>1605</assigned_endtime>
<assigned_room id="RM_E13"/>
</time>
<time>
<assigned_day>1</assigned_day>
<assigned_period>11</assigned_period>
<assigned_starttime>1615</assigned_starttime>
<assigned_endtime>1700</assigned_endtime>
<assigned_room id="RM_E13"/>
</time>
</times>
</lesson>
<lesson id="LS_18400">
<periods>1</periods>
<lesson_subject id="SU_Finw"/>
<lesson_teacher id="TR_Cp"/>
<lesson_classes id="CL_MM4B"/>
<teacher_value>100000</teacher_value>
<effectivebegindate>20170814</effectivebegindate>
<effectiveenddate>20180706</effectiveenddate>
<occurence>11111FF11111FF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF1111FFF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF11111FF11111FF1111FFFF1111FFFFFFFFFFFFFFFF11111FF1F111FF111FFFF11111FFF1111FF11111FF11111FF11111FF11111FF11111FF1111F</occurence>
<times>
<time>
<assigned_day>4</assigned_day>
<assigned_period>5</assigned_period>
<assigned_starttime>1100</assigned_starttime>
<assigned_endtime>1145</assigned_endtime>
<assigned_room id="RM_113"/>
</time>
</times>
</lesson>
<lesson id="LS_23200">
<periods>3</periods>
<lesson_subject id="SU_W+G"/>
<lesson_teacher id="TR_Mü"/>
<lesson_classes id="CL_E3B"/>
<teacher_value>300000</teacher_value>
<effectivebegindate>20170814</effectivebegindate>
<effectiveenddate>20180706</effectiveenddate>
<block>3</block>
<occurence>11111FF11111FF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF1111FFF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF11111FF11111FF1111FFFF1111FFFFFFFFFFFFFFFF11111FF1F111FF111FFFF11111FFF1111FF11111FF11111FF11111FF11111FF11111FF1111F</occurence>
<times>
<time>
<assigned_day>4</assigned_day>
<assigned_period>3</assigned_period>
<assigned_starttime>0910</assigned_starttime>
<assigned_endtime>0955</assigned_endtime>
<assigned_room id="RM_E14"/>
</time>
<time>
<assigned_day>4</assigned_day>
<assigned_period>4</assigned_period>
<assigned_starttime>1010</assigned_starttime>
<assigned_endtime>1055</assigned_endtime>
<assigned_room id="RM_E14"/>
</time>
<time>
<assigned_day>4</assigned_day>
<assigned_period>5</assigned_period>
<assigned_starttime>1100</assigned_starttime>
<assigned_endtime>1145</assigned_endtime>
<assigned_room id="RM_E14"/>
</time>
</times>
</lesson>
<lesson id="LS_25000">
<periods>2</periods>
<lesson_subject id="SU_De"/>
<lesson_teacher id="TR_Bt"/>
<lesson_classes id="CL_M3A"/>
<teacher_value>200000</teacher_value>
<effectivebegindate>20170814</effectivebegindate>
<effectiveenddate>20180706</effectiveenddate>
<block>2</block>
<occurence>11111FF11111FF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF1111FFF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF11111FF11111FF1111FFFF1111FFFFFFFFFFFFFFFF11111FF1F111FF111FFFF11111FFF1111FF11111FF11111FF11111FF11111FF11111FF1111F</occurence>
<times>
<time>
<assigned_day>5</assigned_day>
<assigned_period>3</assigned_period>
<assigned_starttime>0910</assigned_starttime>
<assigned_endtime>0955</assigned_endtime>
<assigned_room id="RM_226"/>
</time>
<time>
<assigned_day>5</assigned_day>
<assigned_period>4</assigned_period>
<assigned_starttime>1010</assigned_starttime>
<assigned_endtime>1055</assigned_endtime>
<assigned_room id="RM_226"/>
</time>
</times>
</lesson>
<lesson id="LS_25200">
<periods>2</periods>
<lesson_subject id="SU_FRW"/>
<lesson_teacher id="TR_Md"/>
<lesson_classes id="CL_M3A"/>
<teacher_value>200000</teacher_value>
<effectivebegindate>20170814</effectivebegindate>
<effectiveenddate>20180706</effectiveenddate>
<block>2</block>
<occurence>11111FF11111FF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF1111FFF11111FF11111FF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FFFFFFFFFFFFFFFF11111FF11111FF11111FF11111FF11111FF11111FF1111FFFF1111FFFFFFFFFFFFFFFF11111FF1F111FF111FFFF11111FFF1111FF11111FF11111FF11111FF11111FF11111FF1111F</occurence>
<times>
<time>
<assigned_day>4</assigned_day>
<assigned_period>1</assigned_period>
<assigned_starttime>0730</assigned_starttime>
<assigned_endtime>0815</assigned_endtime>
<assigned_room id="RM_114"/>
</time>
<time>
<assigned_day>4</assigned_day>
<assigned_period>2</assigned_period>
<assigned_starttime>0820</assigned_starttime>
<assigned_endtime>0905</assigned_endtime>
<assigned_room id="RM_114"/>
</time>
</times>
</lesson>
一次尝试是这样的:
(.*?)<lesson id=(.*)[sS]*?(assigned_day>5)?</lesson>
你可以试试这个正则表达式:
<lessons+id[^>]*>(?=(?:(?!</lesson>).)*<assigned_day>5</assigned_day>).*?</lesson>
PS:确保在记事本++编辑器中选中._matches换行
符演示