#regex
Вопрос:
Я пытаюсь использовать обычное выражение для захвата текста между последним lt;/tabmatgt;
тегом и последним lt;/paragt;
тегом. Я пробовал использовать lt;/tgroupgt;lt;/tbodygt;lt;/tabmatgt;.*?lt;/paragt;
или (lt;tabmat frame=".*?".*?gt;(?:[sS](?!lt;/tabmat)) ?Input Conditions[sS] ?)[lt;/tabmatgt;]*(?=lt;/paragt;)
, но это не сработало. Он выбирает весь текст между первым тегом tabmat и продолжает до конца первого lt;/para
тега. Если вы посмотрите на пример теста XML, откроется lt;warning
тег с несколькими lt;para
тегами. Регулярное выражение выделяет текст до первого lt;/para
тега. но не захватывает последнее lt;/para
.
Пример: lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt;End Textlt;/paragt;
РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ: (lt;tabmat frame=".*?".*?gt;(?:[sS](?!lt;/tabmat)) ?Input Conditions[sS] ?)[lt;/tabmatgt;]*(?=lt;/paragt;)
Я не могу понять, какое РЕГУЛЯРНОЕ выражение мне следует использовать. Мы ценим вашу помощь.
Пример XML:
lt;tabmat frame="none" colsep="0" pgwide="0"gt; lt;tgroup cols="2" align="left"gt; lt;colspec colname="col1" align="left" colwidth="0.99in"gt; lt;colspec colname="col2" colwidth="0.78*"gt; lt;spanspec namest="col1" nameend="col2" spanname="span1"gt; lt;tbodygt; lt;rowgt; lt;entry spanname="span1" colsep="0" align="left"gt; lt;emphasis type="u"gt; Input Conditionslt;/emphasisgt;.lt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt; lt;tabmat frame="none" colsep="0" pgwide="0"gt; lt;tgroup cols="2" align="left"gt; lt;colspec colname="col1" align="left" colwidth="1.0in"gt; lt;colspec colname="col2" colwidth="0.78*"gt; lt;spanspec namest="col1" nameend="col2" spanname="span1"gt; lt;tbodygt; lt;rowgt; lt;entry spanname="span1" colsep="1" align="left"gt; lt;emphasis type="b"gt;Applicability: lt;/emphasisgt; Alllt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt; lt;tabmat frame="none" colsep="0" pgwide="0"gt; lt;tgroup cols="1"gt; lt;colspec colname="col1" colwidth="1.00*"gt; lt;tbodygt; lt;rowgt; lt;entrygt; lt;emphasis type="b"gt;Required Conditions:lt;/emphasisgt;lt;/entrygt;lt;/rowgt; lt;row valign="top"gt; lt;entrygt; lt;randlistgt; lt;itemgt;r oGiyelC rfreSponguiVdyeps rd (reef rt olt;emphasis type="u" color="blue"gt; lt;xref xref="test ref"gt;lt;/emphasisgt;).lt;/itemgt; lt;itemgt; ScfChosmer kC Geot nsuren ono ctiawdt ill n soexisipvrtt e hnethe nctneqeucarnttaeironedi am inogmfr p ibereofmrde.lt;/itemgt; lt;itemgt;erh prossa nipEsvunvbla rieaaetaxle eitinaedthte er gfn inumia .aecenist lt;/itemgt;lt;/randlistgt;lt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt; lt;tabmat frame="none" colsep="0" pgwide="0"gt; lt;tgroup cols="1"gt; lt;colspec colname="col1" colwidth="1.00*"gt; lt;tbodygt; lt;rowgt; lt;entrygt; lt;emphasis type="b"gt;Personnel Recommended:lt;/emphasisgt; 2 lt;/entrygt;lt;/rowgt; lt;rowgt; lt;entrygt; lt;randlistgt; lt;itemgt;cihTnieca enAprformGs Ca oSprteoirnnuo fctlt;/itemgt; lt;itemgt;teisTchncsii eca TBnnsaihsa inc Alt;/itemgt;lt;/randlistgt;lt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt; lt;tabmat frame="none" colsep="0" pgwide="0"gt; lt;tgroup cols="2"gt; lt;colspec colname="colspec0" align="left"gt; lt;colspec colname="colspec1"gt; lt;spanspec namest="colspec0" nameend="colspec1" spanname="span1"gt; lt;tbodygt; lt;rowgt; lt;entry spanname="span1" colsep="1" align="left"gt; lt;emphasis type="b"gt;Support Equipment:lt;/emphasisgt; Nonelt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt; lt;tabmat frame="none" colsep="0" pgwide="0"gt; lt;tgroup cols="2"gt; lt;colspec colname="colspec0" align="left"gt; lt;colspec colname="colspec1"gt; lt;spanspec namest="colspec0" nameend="colspec1" spanname="span1"gt; lt;tbodygt; lt;rowgt; lt;entry spanname="span1" colsep="1" align="left"gt; lt;emphasis type="b"gt;Consumables: lt;/emphasisgt; Nonelt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt; lt;tabmat frame="none" pgwide="0"gt; lt;tgroup cols="1"gt; lt;colspec colname="col1"gt; lt;tbodygt; lt;rowgt; lt;entrygt; lt;emphasis type="b"gt;Safety Conditions:lt;/emphasisgt; lt;warninggt; lt;paragt;ctdesajTehu inshsevtetnarroorohfedln yl crt . oswoi uano ipko .reuFacg.ielat drzetod tl ciT inedcuseer uc lori epiu elyosyloif mropsh,l sonawart elmr o eccoaolhrimmc edzhpu orodmpnyennhatsd a rn neeergilt;/paragt; lt;paragt;ePfrrom pproer lt;acronymgt;lt;defgt;Oto Luk cTt ag uOlt;/defgt;lt;termgt;OLTOlt;/termgt;lt;/acronymgt;yn ncsaerse oictrbsr er ueicoakr lt;acronymgt; lt;defgt;Emergecny oP ewrOfflt;/defgt;lt;termgt;EPOlt;/termgt;lt;/acronymgt;rc pew ricsploihe npct lcdcioba.uaadehatn rscel a lwilt;/paragt;lt;paragt; rnieidoFoa.to o tpalnueenyengstp ecm rsiorulol oro cee qeod tdrtrydeacma ero /nirlcac ursenlsnpdeoalr howpgtnirtr nre upprori etf mm onoiena rtmii vjauaitellsatlt;/paragt;lt;/warninggt;lt;/entrygt;lt;/rowgt;lt;/tbodygt;lt;/tgroupgt;lt;/tabmatgt;TESTlt;/paragt;
Ответ №1:
Регулярное выражение Perl протестировано на вашем образце в UE 28.20.0.70
(?s).*lt;/tabmatgt;K.*(?=lt;/paragt;)