我試圖創建一個正則表達式來標記一個字符串。一個示例字符串會是。RegEx到Tokenize字符串
John Mary, "Name=blah;Name=blahAgain" "Hand=1,2"
我試圖找回:
- 約翰
- 瑪麗
- 名稱=等等;名稱= blahAgain
- 手= 1,2
我試圖創建一個正則表達式來標記一個字符串。一個示例字符串會是。RegEx到Tokenize字符串
John Mary, "Name=blah;Name=blahAgain" "Hand=1,2"
我試圖找回:
對於這個具體的例子,我會這樣做:
([^\s]*)\s+([^,\s]*)\s*,\s*"([^"]*)"\s+"([^"]*)"
更新:修改拆分瑪麗和約翰
感謝您的建議,但我是使用java中的掃描器類,它似乎並不喜歡它 – binarymelon 2010-01-19 18:46:15
@slebetman:瑪麗和約翰不會與你的正則表達式分開 – 2010-01-19 19:02:32
這很奇怪,我很肯定上述是相當簡單的老派正規表達式,沒有任何怪異的PCRE或egrep東西你確定你已經用''''在java中逃脫了''' – slebetman 2010-01-19 19:03:00
這很容易:
([^ ])+
這將得到瑪麗以及逗號後的逗號。它也不會一次捕獲所有需要的字段。 – ferdystschenko 2010-01-19 20:05:09
實際上,它每次只捕獲一個字符,除非你把'+'放入了隱含的內容。 – ferdystschenko 2010-01-19 20:07:47
由於您使用的Java,爲什麼不使用的StringTokenizer?例如: -
StringTokenizer st = new StringTokenizer("String to tokenize", " ");
while (st.hasMoreTokens())
{
// get next token
String someVariable = st.nextToken();
}
這適用於你的例子:
(\w+) (\w+), \"([^"]+)" \"([^"]+)
貴公司的所有字符串有完全相同的模式?
一種可能的方式:在拆分,
後跟一個space
或在space
或quotation mark
之一:
"John Mary, \"Name=blah;Name=blahAgain\" \"Hand=1,2\"".split(",\\s|[\\s\"]")
一個例子(沒有任何進一步的說明)可能不夠。 「Name = blah; Name = blahAgain」'裏面可以有'''''可能不會,但是這並不會傷害到知道。'Name = blah; Name = blahAgain「'裏面的空格呢?名字總是兩個單獨的名字嗎?喬·埃倫·彼得,......(喬·埃倫和彼得)怎麼樣?僅舉幾例可能存在問題的案例 – 2010-01-19 19:45:47