2012-07-19 91 views
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]*>) 並返回下面的輸出(在快報工具運行)

<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> 

這些條目忽略,因爲它含有Mo重於一個特殊字符(包括空格)。任何人都可以請給我一個正確的正則表達式爲上述情況。 謝謝。

+0

您是否試圖簡單地查找該行是否匹配,或者您是否嘗試用反向引用發現違規字符? – 2012-07-19 10:50:31

回答

1

我會使用環視的中間部分,所以不是

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

我會用

​​

沒有?<value>部分,我真的不認識的語法,這成爲

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

只需在想要保存的位置添加捕獲組任何特別的東西。

+0

感謝您的回覆,我收到錯誤消息,如「To many」的「」。我正在使用Expresso Tool。 – Mohan 2012-07-19 10:47:16

+0

我編輯添加一個'*'我錯過了,但否則它似乎工作,請參閱[此鏈接](http://rubular.com/r/qmNLqc34X4)。我在這裏省略了命名組,因爲我不知道您使用的是哪種口味,我只是複製了該部分的語法。 – Keppil 2012-07-19 10:51:25

+0

最後一個工作正常,但它也返回 1272此標記也。我想標記包含特殊字符的條目。再次感謝。 – Mohan 2012-07-19 11:05:05