2011-01-21 48 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查找任何以下和前面的“和”,“之间”。

这应该让你开始。