2014-02-27 34 views
0

我正在研究vbs正則表達式,它將在結束標記之前檢測包含文本和CRLF字符的標記。我目前使用\w+[:;?!.,""\)\]-~]*(\s)*(\r\n\s*)(<\/.*>)正則表達式在換行前匹配可見的非字母字符

從表達式的末尾展望

,我匹配任何結束標記,CRLF加上任選空格,CRLF之前的可選空間,它應該可選匹配任何其他可見非字母在任何單詞之後出現的字符。

這是匹配之類的東西

myword! CRLF</tag> 
mywordCRLF</tag> 
myword CRLF</tag> 
myword...CRLF  </tag> 

不過,我不想下面匹配,因爲我需要檢測包含文本和換行的標籤。

</otherclosingtag> CRLF </tag> 

我關心的\w+[:;?!.,""\)\]-~]*位,因爲它不看我的權利,因爲我需要在這裏插入一個相當大的數量的字符。

我試着用\ S,\ W取代它,但它們似乎都與CRLF字符匹配。

任何想法?

乾杯!

回答

1

,我使用的解決方案:

\w+[^\r\n<>]*(\r\n\s*)(<\/.*>)

一個字(所以沒有),那麼任何不是CR,LF匹配或>(所以它不匹配openingtag> CRLF</closingtag>

這是什麼M42已經提出了一個修改後的版本,我已經加入<>確保我們不會匹配標籤。

感謝您的建議!

0

試試這個:

^.*[\n\t\s]*</.*>$ --> BAD 

^.*[\r\n\t\s]*</.*>$ 
+0

嗯,在這種形式下,這與任何東西都不匹配:) 爲什麼用'[\ n \ t \ s] *'替換我的'(\ r \ n \ s *)'?我的解決方案與它的內容相匹配,即一個CRLF加上可選空間,而您的匹配\ n,\ t或\ s中的任何一個是否發生? – Bartosz

+0

對不起。我錯了。我會忘記'\ r'。 '^。* [\ r \ n \ t \ s] * $' – Andynedine

+0

也許你對解釋事情毫無希望。也許你應該看看你的眼睛裏的日誌而不是別人的斑點。 –

1

如何使用非貪婪修改:

\w+\W*?\r\n\s*(<\/.*>) 

\w+[^\r\n]*\r\n\s*(<\/.*>) 
+0

不幸的是,這些匹配的東西像' CRLF' - 我會嘗試修改它,以便它不符合其他標籤... – Bartosz

相關問題