Я работаю с некоторыми данными XML, и я пытаюсь удалить CDATA в XML.
Я пробовал много способов, и кажется, что проще - заменить все шаблоны
hey <![CDATA[mate - number 1]]> what's up
по
hey mate - number 1 what's up
Regex, чтобы получить полное выражение (\<\!\[CDATA\[)(.*)(\]\]\>)
, поэтому при использовании PERL (PCRE) мне просто нужно заменить на \2
.
Таким образом, используя Powershell, я запускаю CMD:
powershell -Command "(gc Desktop\test_in.xml) -replace '(\<\!\[CDATA\[)(.*)(\]\]\>)', '\2' | Out-File Desktop\test_out.xml")
Хотя результат всегда заменяется строкой \2
вместо mate - number 1
в примере.
Вместо \2
я попытался (?<=(\<\!\[CDATA\[))(.*?)(?=(\]\]\>))
, так как я получаю с этим внутреннюю часть, которую я пытаюсь сохранить, хотя результат разочаровывает, снова буквальная замена.
Есть предположения?
Спасибо!
PS. Если кто-нибудь знает, как избежать этой замены в R, это также полезно.