2011-06-14 28 views
0
<A "SystemTemperatureOutOfSpec" > 

解析「」中的字符串的正則表達式應該是什麼?在上面的示例中,它是'SystemTemperatureOutOfSpec'解析「」中的字符串的正則表達式「」

+3

到目前爲止你寫了些什麼?我們不是在這裏爲你做你的工作...... – mdm 2011-06-14 12:49:18

+1

然後用Google看起來更好:關於這個問題有很多問題 – 2011-06-14 12:50:35

+0

看看這個問題,它看起來很相似: http://stackoverflow.com/questions/5412835/regular-expression-value-in-between-quotes – lhan 2011-06-14 12:51:00

回答

-1

您確定您需要正則表達式匹配嗎?看看你的「字符串」你可能會更好使用Xml解析器?

+0

這不是一個有效的XML片段。 – 2011-06-14 12:53:48

0

試試這個

string Exp = "\"!\""; 
+0

Wtf?這並不是我所知道的。 ;) – Qtax 2011-06-14 13:23:07

1

在JavaScript中,這個正則表達式:

/"([^"]*)"/ 

前。

> /"([^"]*)"/.exec('<A "SystemTemperatureOutOfSpec" >')[1] 
    "SystemTemperatureOutOfSpec" 

相似的模式應該在一堆其他編程語言中工作。

+0

+1,因爲要走100k(; – Qtax 2011-06-14 13:23:57

0

我不知道我理解你的問題很好,但如果你需要匹配雙引號之間的一切,那就是:/(?<=").*?(?=")/s

0
(?<=<A\s")(?<content>.*)(?="\s>) 
0

正則表達式不得到比這更簡單,所以你應該能夠自己解決它。以下是您如何去做的:

第一步是嘗試儘可能準確地定義您想要查找的內容。讓我們從這個開始:你想要找到一個報價,然後是除報價之外的一些字符,然後是一個報價。那是對的嗎?如果是這樣,我們的模式有三個部分:「報價」,「除報價之外的其他字符」和「報價」。

現在我們需要做的就是弄清楚這些模式的正則表達式是什麼。

引述

對於 「報價」,該圖案是從字面上"。正則表達式有特殊字符,您必須注意(*.等)。任何不是特殊字符的東西都會匹配,"就是其中一個字符。有關您的語言的特殊字符的完整列表,請參閱文檔。

人物比報價

所以,現在的問題是,我們如何匹配「比報價其它字符」等?這聽起來像一個範圍。範圍是方括號和允許字符的列表。如果列表以^開頭,則表示它是不允許的字符列表。我們想要除報價外的任何字符,所以這意味着[^"]

「一些」

該範圍只是意味着該範圍內的任何字符一個,但我們希望「一些」。 「某些」通常意味着零個或更多,或者一個或多個。您可以在表達的一部分之後放置*以表示該零件的零個或多個零部件。同樣,使用+表示一個或多個(並且?表示零或一)。還有其他一些變化,但這對於這個問題已經足夠了。

因此,除報價之外的某些字符的範圍是[^"](除報價之外的任何字符),後面跟着*(零個或多個)。因此,[^"]*

全部放在一起

這是比較容易的部分:只是將所有的作品。除報價之外的其他字符後跟一個報價,報價爲"[^"]*"

捕捉有趣的部分

我們現在將匹配您的字符串的模式。然而,你想要的只是引號內的部分。爲此,您需要一個「捕獲組」,用圓括號表示。要捕獲正則表達式的一部分,請將其放在括號中。所以,如果我們想捕捉除開始和結束報價之外的所有內容,則模式將變爲"([^"]*)"


這就是你如何學習正則表達式。將問題分解爲由短序列字符組成的精確聲明,找出每個序列的正則表達式,然後將它們放在一起。

此答案中的模式可能實際上並不是您的完美答案。有一些邊緣情況需要擔心。例如,您可能只想匹配非單詞字符後的引號,或者只在單詞的開頭或結尾引用引號。這是完全可能的,但高度依賴於你的確切問題。搞清楚如何做到這一點同樣簡單 - 決定你想要什麼,然後看看文檔,看看如何做到這一點。

花一天時間練習正則表達式,你永遠不需要向任何人請求正規表達式在其餘職業生涯中的幫助。他們並不難,但他們確實需要集中學習。

相關問題