- 你不需要附上character classes像
\w
或\s
與[
]
,[\s]
是一樣的\s
(只有當你應該用[
]
括起來的情況下,當你想要創建單獨的字符類,它結合了現有的字符類,如[\s\d]
,它代表的字符是wh itespaces或數字)。
- 此外,默認情況下空格包含在正則表達式中,因此
"\s "
將匹配兩個空格,一個用於\s
,另一個用於
。
- 「零個或多個」由
*
表示,?
代表零或一次
- 如果你想要寫你的正則表達式爲字符串,您還需要通過之前
增加另一個\
逃脫\
因此,與下面的正則表達式"\\(\\s*\\w+\\s*\"[\\w]+\"\\s*\\)"
代表
\\( - 1. An opening parenthesis
\\s* - 2. Zero or more whitespace chars
\\w+ - 3. At least one word character
\\s* - 4. Whitespace again, zero or more
\" - 5. opening quotation
\\w+ - 5. One or more char - I am not sure which symbols you want to add here
but you can for instance add them manually with [\\w+\\-*/=<>()]+
\" - 5. closing quotation
\\s* - 6. Optional whitespace
\\) - 6. closing parenthesis
現在,如果你想獲得一些嘗試部分匹配的文本可以使用groups(您想要與未轉義的括號匹配的環繞部分),就像正則表達式\\w+ (\\w+)
一樣,它會找到一對單詞,但第二個單詞將放置在組中(索引1)。爲了獲得該組的內容,您只需要使用group(index)
從Matcher
例如:
Pattern pattern = Pattern.compile("\\w+ (\\w+)");
Matcher matcher = pattern.matcher("ab cd efg hi jk");
while (matcher.find()) {
System.out.println("entire match =\t"+matcher.group());
System.out.println("second word =\t"+matcher.group(1));
System.out.println("---------------------");
}
輸出:
entire match = ab cd
second word = cd
---------------------
entire match = efg hi
second word = hi
---------------------
「*錯了我的正則表達式*」嗯,這是你誰應該說明問題,你有它。然後,我們可以嘗試找到問題的原因和解決方案。 – Pshemo
@Pshemo問題是正則表達式不符合給定的規範(步驟1-6);你也可以看看第一句中給出的例子。原因是我還沒有計算出正則表達式。解決辦法是要求SO上的指針;) – rath
「*(包含符號)*」是什麼意思?你想在引號內接受哪些符號? – Pshemo