簡體   English   中英

幫助編寫字符串正則表達式

[英]Help in writing a Regular expression for a string

您好,請幫我獲得以下要求的正則表達式

我的字符串類型為

String vStr = "Every 1 nature(s) - Universe: (Air,Earth,Water sea,Fire)";
String sStr = "Every 1 form(s) - Earth: (Air,Fire) ";

使用正則表達式后,從這些字符串中獲取"Air,Earth,Water sea,Fire""Air,Fire"

那意味着之后

String vStrRegex ="Air,Earth,Water sea,Fire";
String sStrRegex ="Air,Fire";

輸入的所有字符串都將用":"分隔,所需的值始終放在方括號內

謝謝

正則表達式將如下所示:

: \((.*?)\)

拼出來:

Pattern p = Pattern.compile(": \\((.*?)\\)");
Matcher m = p.matcher(vStr);
// ...
String result = m.group(1);

這將捕獲括號的內容作為第一個捕獲組。

請嘗試以下操作:

\((.*)\)\s*$

結尾的$很重要,否則您將不小心將“(s)”匹配。

如果分別有每個字符串,請嘗試以下表達式: \\(([^\\(]*)\\)\\s*$

這將使您獲得最后一對方括號的內容(作為組1)。如果字符串由:串聯,請嘗試首先將它們分開。

問問自己是否真的需要正則表達式。 您需要的文本是否總是出現在最后兩個括號內? 如果是這樣,則可以使其簡單並使用子字符串代替:

String vStr = "Every 1 nature(s) - Universe: (Air,Earth,Water sea,Fire)";

int lastOpeningParens = vStr.lastIndexOf('(');
int lastClosingParens = vStr.lastIndexOf(')');
String text = vStr.substring(lastOpeningParens + 1, lastClosingParens);

這比正則表達式更具可讀性。

我假設:和左括號( :之間只有空格字符

Pattern regex = Pattern.compile(":\\s+\\((.+)\\)");

您會在捕獲組1中找到結果。

試試這個正則表達式:

.*\((.*)\)

$ 1將包含必需的字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM