Regex删除除XML以外的所有
我需要一个用于notepad++的正则表达式的帮助,以匹配除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>
(!?\)
预期结果:
<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>