2011-01-21 97 views
0

我可以有一個字符串格式有以下兩種:java的正則表達式的幫助

"[HardCOdeText1 (HardCodeText2)].[HardCodeText3].[MatchString] between changeValue1 and changeValue2"; 
"[MatchString] between changeValue1 and changeValue2"; 

我想匹配,如果字符串有"[MatchString] between"表達。 並且取決於我匹配哪個字符串,更改後的數值格式應該是以下各項之一: 更改後的格式應該是:

"[HardCOdeText1 (HardCodeText2)].[HardCodeText3].[MatchString] between chamged1 and changed2"; or 
"[MatchString] between changed1 and changed2"; 

我開始表達「之間[的MatchString]」匹配,並且我被困在有: 任何幫助表示讚賞。

+0

你的示例格式字符串的某些部分看起來像是它們可能是字面的,而某些部分是佔位符 - 例如在'changeValue1和changeValue2之間'我猜你正在尋找字面詞「between」和「and 「所以你在你的正則表達式中需要這些字面值,但* changeValue1 *可以是任何東西,所以你需要一個模式。我也不能確定在你的例子中`[`和`]`是否是佔位符,或者是文字方括號。你能舉一個你想要匹配的真實文本的實例嗎? – 2011-01-21 19:23:13

回答

0

是否使用"[MatchString] between"因爲沒有逃脫[]括號的模式?字符[].,()都是RegEx中的特殊字符。如果你想把它們當作文字字符,你需要在模式中轉義它們。

你的問題有點不清楚。也許如果你提供了一個你正在使用的真正的輸入字符串的具體例子,你想要什麼樣的比賽?

我也想看看regular-expressions.info瞭解更多信息和教程,包括Java的RegEx實現的信息和語法。

0

這將匹配您給出的兩種線條示例。

String inputLine; 
String outputLine; 

String regex1 = "(\\[MatchString\\] between)changeValue1 and"; 
String regex2 = "(\\[MatchString\\] between)[^ ]+ and"; 

do { 
    inputLine = readTheInput(); 

    outputLine = inputLine.replaceFirst(regex1, "$1changed1 and"); 

    writeTheOutput(outputLine); 
} while (thereIsStillInput()); 

第一regex1具體查找changeValue1而第二regex2查找任何以下和前面的「和」,「之間」。

這應該讓你開始。