У меня есть XML-файл, и я хочу удалить все, кроме определенной строки.
В StackOverflow есть и другие подобные вопросы, но ни один из них не подходит для моего файла, и после нескольких часов попыток использовать другое регулярное выражение Iхотел бы попросить о помощи.
На данный момент ближайшим регулярным выражением, которое удалось частично, но не полностью, является:
^((?!<query.*<\/query>).)*$
образец файла XML:
<search>
<query>index=_internal [`set_local_host`] source=*license_usage.log* type="Usage" | eval h=if(len(h)=0 OR isnull(h),"(SQUASHED)",h) | eval s=if(len(s)=0 OR isnull(s),"(SQUASHED)",s) | eval idx=if(len(idx)=0 OR isnull(idx),"(UNKNOWN)",idx) | bin _time span=1d | stats sum(b) as b by _time, pool, s, st, h, idx | timechart span=1d sum(b) AS volumeB by st fixedrange=false | join type=outer _time [search index=_internal [`set_local_host`] source=*license_usage.log* type="RolloverSummary" | eval _time=_time - 43200 | bin _time span=1d | stats latest(stacksz) AS "stack size" by _time] | fields - _timediff | foreach * [eval <<FIELD>>=round('<<FIELD>>'/1024/1024/1024, 3)] </query>
<earliest>$central_time.earliest$</earliest>
<latest>$central_time.latest$</latest>
<sampleRatio>1</sampleRatio>
</search>
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option>
<option name="charting.chart.stackMode">stacked</option>
<option name="charting.chart.style">shiny</option>
<option name="trellis.scales.shared">1</option>
<option name="trellis.size">medium</option>
</chart>
</panel>
</row>
<row>
<panel>
<chart>
<search>
<query>index=_introspection sourcetype=splunk_resource_usage component=hostwide saxsa
| eval tcu = ('data.cpu_system_pct' + 'data.cpu_user_pct')
| timechart limit=0 span=1d avg(tcu) by host</query>
<earliest>$central_time.earliest$</earliest>
<latest>$central_time.latest$</latest>
<sampleRatio>1</sampleRatio>
</search>
Я использую regex101, так что образецможно вставить туда, чтобы увидеть, почему рекс работает только частично.Короче говоря, он не соответствует первому вхождению, но соответствует второму вхождению.Я ожидаю, что регулярное выражение не соответствует ни одному из случаев <query>.*</query>
fx.Я хочу сопоставить что угодно, но не следующую строку:
<query>anything between(can be multiple lines*)</query>