Regx, чтобы удалить данный шаблон в строке - PullRequest
0 голосов
/ 11 мая 2011

В XML у нас есть несколько тегов, таких как

<string1 : string2>

и многие другие.

Мне нужно написать регулярное выражение, чтобы удалить все строки, заканчивающиеся на «:», то есть здесь также string1 и «:». и он всегда должен быть внутри <>

например. Ввод = <string1 : string2>

вывод = <string2>

Ответы [ 5 ]

1 голос
/ 11 мая 2011

Вот как вы делаете это в php:

<?php
 $str = "<string1 : string2>";
 $s = preg_replace('~(</?)[^>:]*:\s*~', "$1", $str);
 var_dump($s);
?>

РЕДАКТИРОВАТЬ В Java

String str = "<ns2:senderId xmlns=\"netapp.com/fsoCanonical\">NetApp</ns2:senderId>";
System.out.println(str.replaceAll("(</?)[^>:]*:\\s*", "$1"));

Вывод

<senderId xmlns="netapp.com/fsoCanonical">NetApp</senderId>
0 голосов
/ 11 мая 2011
(?<=<).*?:\s*(?=.*?>)

Взгляд обеспечивает, что < находится слева, а затем соответствует вашей строке, включая : и дополнительные пробелы. Следующий прогноз гарантирует, что остальная часть тега будет найдена.

Захватите это и замените пустой строкой.

Вы можете посмотреть онлайн здесь http://regexr.com

регулярные выражения.info / java.html объясняет, как применять регулярные выражения в Java.

0 голосов
/ 11 мая 2011

С парсером xslt вы можете использовать

<xsl:template match="*">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="@*|text()|comment()|processing-instruction()">
    <xsl:copy-of select="."/>
</xsl:template>

Эта ссылка актуальна для вашего вопроса.

0 голосов
/ 11 мая 2011
<[^>:]*:\s*([^>]*)>

Поиск и замена на <$1>.

0 голосов
/ 11 мая 2011

<.*?:\s*(.*?)> должен охватывать только ту часть, которая вас интересует. Как выполнять регулярные выражения, может варьироваться от языка программирования к языку программирования.

В Java вы могли бы сделать

string.replaceAll("<.*?:\s*(.*?)>", "<$1>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...