我有這樣的字符串:Java的正則表達式澄清
<RandomText>
executeRule(x, y, z)
<MoreRandomText>
我想做到的是以下內容:如果在更大的文本塊中存在此executeRule
串,我想獲得它的第2'參數。
我該怎麼做?
我有這樣的字符串:Java的正則表達式澄清
<RandomText>
executeRule(x, y, z)
<MoreRandomText>
我想做到的是以下內容:如果在更大的文本塊中存在此executeRule
串,我想獲得它的第2'參數。
我該怎麼做?
你是什麼意思的更大的文本塊?
如果要提取從表達第二PARAM,它會像
executeRule\(\w+,\s*(\w+),\s*\w+\)
第二個參數是舉行捕獲組$ 1中。
請記住,要在Java中使用此表達式,您需要轉義'\'。此外,我只是假設\ w足夠符合您的參數,這取決於您的特定規則。
如果你需要一些幫助,在Java中實際使用正則表達式,也有可以轉了,我發現這個教程是相當簡單的很多資源,它解釋了基本用法: http://www.vogella.de/articles/JavaRegularExpressions/article.html
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
Pattern p = Pattern.compile("executeRule\\(\\w+, (\\w+), \\w+\\)");
Matcher m = p.matcher(YOUR_TEXT_FROM_FILE);
while (m.find()) {
String secondArgument = m.group(1);
...process secondArgument...
}
一旦此代碼執行secondArgument
將包含值y
。上面的正則表達式假定您期望參數由單詞字符組成(即小寫字母,數字和下劃線)。
Java字符串文字語法需要雙反斜槓,正則表達式引擎會看到單反斜槓。
如果你想因爲它是允許在大多數編程語言中,你可以使用下面的正則表達式,以允許在字符串中的空白:
Pattern p = Pattern.compile("executeRule\\(\\s*\\w+\\s*,\\s*(\\w+)\\s*,\\s*\\w+\\s*\\)");
將它始終有三個參數? –
它總是有3個參數;參數也是字符串.... x,y,z可以從一個函數調用到另一個函數調用。 – Sergiu
「x,y,** z **」或「x,y,** x **」?是一個區別! –