Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex删除除XML以外的所有_Regex_Xml_Notepad++_Negate - Fatal编程技术网

Regex删除除XML以外的所有

Regex删除除XML以外的所有,regex,xml,notepad++,negate,Regex,Xml,Notepad++,Negate,我需要一个用于notepad++的正则表达式的帮助,以匹配除XML以外的所有内容 我正在使用的正则表达式: (!?\) 预期结果: <Person><Name>Foo</Name><Surname>Bar</Surname></Person> <Person><Name>Bar</Name><Surname>Foo</Surname></Person>

我需要一个用于notepad++的正则表达式的帮助,以匹配除XML以外的所有内容

我正在使用的正则表达式:
(!?\)
预期结果:

<Person><Name>Foo</Name><Surname>Bar</Surname></Person>
<Person><Name>Bar</Name><Surname>Foo</Surname></Person>
<Person><Name>Lorem</Name><Surname>Ipsum</Surname></Person>
<Person><Name>Lorem</Name><Surname>Ipsum</Surname></Person>
FooBar
巴福
洛雷米普苏姆
洛雷米普苏姆

提前谢谢

这并不完美,但应该与您的输入配合使用,这些输入看起来非常简单且结构良好

如果您只需要处理一个未列出的
标记
,您可以使用简单的
(.*?)
正则表达式(它将匹配并捕获任何
标记并匹配任何其他字符)并替换为条件替换模式
(?{1}$1\n:)
(这将重新插入
Person
标记,并在其后面加一个换行符,或者用空字符串替换匹配项):

为了让它更通用一点,您可以使用基于递归的Boost regex和适当的条件替换模式捕获开始和相应的结束XML标记:

查找内容:
(]*>(?:(?!!(?:(?!
)-将其名称捕获到组2中的任何开始标记
  • (?:(?!这不是完美的,但应该与您的输入一起使用,它看起来非常简单且结构良好

    如果您只需要处理一个未列出的
    标记
    ,您可以使用简单的
    (.*?)
    正则表达式(它将匹配并捕获任何
    标记并匹配任何其他字符)并替换为条件替换模式
    (?{1}$1\n:)
    (这将重新插入
    Person
    标记,并在其后面加一个换行符,或者用空字符串替换匹配项):

    为了让它更通用一点,您可以使用基于递归的Boost regex和适当的条件替换模式捕获开始和相应的结束XML标记:

    查找内容:
    (]*>(?:(?!!(?:(?!
    )-将其名称捕获到组2中的任何开始标记

  • (?:(?!能否提供预期结果(尤其是最后一行)?我不确定您想对输入文本做什么!但最后一行输入失败是因为在模式中使用了
    ,请将其更改为
    [^]
    在其他标记名中不包含标记!并在
    *
    之后添加
    ,以停止在第一次
    会议中捕获。我将更新预期结果。谢谢:)我不知道你想用
    做什么(!?\)
    。这将捕获一个可选的感叹号
    ,后面是一个开放式括号、尽可能多的字符和一个封闭式括号。请提供预期结果(尤其是最后一行)?我不确定您想对输入文本做什么!但最后一行输入失败是因为在您的模式中使用了
    ,请将其更改为
    [^]
    以不在其他标记名称中包含标记!并在
    *
    之后添加
    以停止在第一次
    会议中捕获。我更新了预期的结果。谢谢:)我不知道你想用
    (!?\)做什么
    。这将捕获一个可选的感叹号
    ,后面是一个开放的括号,尽可能多的字符,和一个封闭的括号。卓越的解决方案,很好的解释。我添加了一个简化版本,以防您只需要处理1个不受欢迎的
    标记。卓越的解决方案,很好的解释。我添加了一个simli如果您只需要处理1个未列出的
    标记,请指定版本。
    <Person><Name>Foo</Name><Surname>Bar</Surname></Person>
    <Person><Name>Bar</Name><Surname>Foo</Surname></Person>
    <Person><Name>Lorem</Name><Surname>Ipsum</Surname></Person>
    <Person><Name>Lorem</Name><Surname>Ipsum</Surname></Person>