[英]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.