2011-09-24 26 views
0

我發現我很難找出確切的正則表達式。 我有一個文本,我必須搜索特定的html標籤。標籤是像在C中發現確切的正則表達式模式的問題#

<snippet lang="java">some java code</snippet> 

我的文字是一樣的東西

This is a sample text where <snippet lang="java">some java code</snippet> and other sample text where this that <snippet lang="java">some java code 2</snippet> 

任何人都可以建議我怎麼能寫的正則表達式嗎?

回答

2

最微不足道的一個你可以想出將是:

<snippet lang="java">.*?</snippet> 

你可能會想捕捉無論是包含在一組在這些標籤之間:

<snippet lang="java">(.*?)</snippet> 

而且甚至可能使java部分變量:

<snippet lang="([^"]+)">(.*?)</snippet> 

Quick PowerShell測試:

PS> $text = 'This is a sample text where <snippet lang="java">some java code</snippet> and other sample text where this that <snippet lang="java">some java code 2</snippet>' 

PS> [Regex]::Matches($text, '<snippet lang="([^"]+)">(.*?)</snippet>') 


Groups : {<snippet lang="java">some java code</snippet>, java, some java code} 
Success : True 
Captures : {<snippet lang="java">some java code</snippet>} 
Index : 28 
Length : 45 
Value : <snippet lang="java">some java code</snippet> 

Groups : {<snippet lang="java">some java code 2</snippet>, java, some java code 2} 
Success : True 
Captures : {<snippet lang="java">some java code 2</snippet>} 
Index : 112 
Length : 47 
Value : <snippet lang="java">some java code 2</snippet> 

請注意,這是所有非常基本的正則表達式知識(或Regex 101在美國大學(學院?)的說法)。如果您需要提出這些問題,也許您應該重新考慮您是否確實需要正則表達式。由於傑米·薩溫斯基曾指出:

一些人,當遇到一個問題,想 「我知道,我將使用正則表達式。」
現在他們有兩個問題。

+0

謝謝喬伊。如果我想要整個匹配'一些java代碼',我該如何編寫一個模式。那是從'<' to last '>'?非常感謝 – saarthak

+0

發現 - '(一些java代碼)' – saarthak

+0

糟糕,它的'((。*?))' – saarthak