<A "SystemTemperatureOutOfSpec" >
解析「」中的字符串的正則表達式應該是什麼?在上面的示例中,它是'SystemTemperatureOutOfSpec
'解析「」中的字符串的正則表達式「」
<A "SystemTemperatureOutOfSpec" >
解析「」中的字符串的正則表達式應該是什麼?在上面的示例中,它是'SystemTemperatureOutOfSpec
'解析「」中的字符串的正則表達式「」
您確定您需要正則表達式匹配嗎?看看你的「字符串」你可能會更好使用Xml解析器?
這不是一個有效的XML片段。 – 2011-06-14 12:53:48
在JavaScript中,這個正則表達式:
/"([^"]*)"/
前。
> /"([^"]*)"/.exec('<A "SystemTemperatureOutOfSpec" >')[1]
"SystemTemperatureOutOfSpec"
相似的模式應該在一堆其他編程語言中工作。
+1,因爲要走100k(; – Qtax 2011-06-14 13:23:57
我不知道我理解你的問題很好,但如果你需要匹配雙引號之間的一切,那就是:/(?<=").*?(?=")/s
(?<=<A\s")(?<content>.*)(?="\s>)
正則表達式不得到比這更簡單,所以你應該能夠自己解決它。以下是您如何去做的:
第一步是嘗試儘可能準確地定義您想要查找的內容。讓我們從這個開始:你想要找到一個報價,然後是除報價之外的一些字符,然後是一個報價。那是對的嗎?如果是這樣,我們的模式有三個部分:「報價」,「除報價之外的其他字符」和「報價」。
現在我們需要做的就是弄清楚這些模式的正則表達式是什麼。
引述
對於 「報價」,該圖案是從字面上"
。正則表達式有特殊字符,您必須注意(*
,.
等)。任何不是特殊字符的東西都會匹配,"
就是其中一個字符。有關您的語言的特殊字符的完整列表,請參閱文檔。
人物比報價
所以,現在的問題是,我們如何匹配「比報價其它字符」等?這聽起來像一個範圍。範圍是方括號和允許字符的列表。如果列表以^
開頭,則表示它是不允許的字符列表。我們想要除報價外的任何字符,所以這意味着[^"]
。
「一些」
該範圍只是意味着該範圍內的任何字符一個,但我們希望「一些」。 「某些」通常意味着零個或更多,或者一個或多個。您可以在表達的一部分之後放置*
以表示該零件的零個或多個零部件。同樣,使用+
表示一個或多個(並且?
表示零或一)。還有其他一些變化,但這對於這個問題已經足夠了。
因此,除報價之外的某些字符的範圍是[^"]
(除報價之外的任何字符),後面跟着*
(零個或多個)。因此,[^"]*
全部放在一起
這是比較容易的部分:只是將所有的作品。除報價之外的其他字符後跟一個報價,報價爲"[^"]*"
。
捕捉有趣的部分
我們現在將匹配您的字符串的模式。然而,你想要的只是引號內的部分。爲此,您需要一個「捕獲組」,用圓括號表示。要捕獲正則表達式的一部分,請將其放在括號中。所以,如果我們想捕捉除開始和結束報價之外的所有內容,則模式將變爲"([^"]*)"
。
這就是你如何學習正則表達式。將問題分解爲由短序列字符組成的精確聲明,找出每個序列的正則表達式,然後將它們放在一起。
此答案中的模式可能實際上並不是您的完美答案。有一些邊緣情況需要擔心。例如,您可能只想匹配非單詞字符後的引號,或者只在單詞的開頭或結尾引用引號。這是完全可能的,但高度依賴於你的確切問題。搞清楚如何做到這一點同樣簡單 - 決定你想要什麼,然後看看文檔,看看如何做到這一點。
花一天時間練習正則表達式,你永遠不需要向任何人請求正規表達式在其餘職業生涯中的幫助。他們並不難,但他們確實需要集中學習。
到目前爲止你寫了些什麼?我們不是在這裏爲你做你的工作...... – mdm 2011-06-14 12:49:18
然後用Google看起來更好:關於這個問題有很多問題 – 2011-06-14 12:50:35
看看這個問題,它看起來很相似: http://stackoverflow.com/questions/5412835/regular-expression-value-in-between-quotes – lhan 2011-06-14 12:51:00