1

我试图在下面的示例 xml 中找到特殊字符的外观。

<?xml version="1.0"?>
<PayLoad>
<requestRows>****</requestRows>
<requestRowLength>1272</requestRowLength>
<exceptionTimestamp>2012070202281068-0700</exceptionTimestamp>
<exceptionTimestamp>201$2070202281068-0700</exceptionTimestamp>
<exceptionTimestamp>20120(702022810680700</exceptionTimestamp>
<exceptionDetail>NO DATA AVAILABLE FOR TIME PERIOD SPECIFIED   =</exceptionDetail>
</PayLoad>

我必须找到包含 $,(,=,- 字符的整个标签。为此,我在正则表达式模式下编写 (<[\w\d]*>\w*(?<value>[^\w]+)\w*\d*</[\w\d]*>) 了它,它返回以下输出(在 Expresso 工具中运行)

<requestRows>****</requestRows>
<exceptionTimestamp>2012070202281068-0700</exceptionTimestamp>
<exceptionTimestamp>20120(702022810680700</exceptionTimestamp>

但它也应该返回低于两个 enrty。

<exceptionTimestamp>201$2070202281068-0700</exceptionTimestamp>
<exceptionDetail>NO DATA AVAILABLE FOR TIME PERIOD SPECIFIED   =</exceptionDetail>

这些条目被省略,因为它包含多个特殊字符(包括空格)。谁能给我一个正确的正则表达式来解决上述情况。谢谢。

4

1 回答 1

1

我会在中间部分使用环视,所以而不是

(<[\w\d]*>\w*(?<value>[^\w]+)\w*\d*</[\w\d]*>)

我会用

(<[\w\d]*>(?=[^<]*[^<\w])(?<value>.*)</[\w\d]*>)

没有?<value>我不真正认识语法的部分,这变成了

(<[\w\d]*>(?=[^<]*[^<\w]).*</[\w\d]*>)

如果您想特别保存任何内容,只需在您喜欢的位置添加捕获组。

于 2012-07-19T10:41:27.770 回答