RegEX在修剪前两个字符

时间:2013-07-26 23:57:26

标签: java regex

我正在尝试使用Java中的matcher从正则表达式中提取两个单词 我的行就是这样,BROWSER = Firefox

我正在使用以下代码

currentLine = currentLine.trim();
System.out.println("Current Line: "+ currentLine);
Pattern p = Pattern.compile("(.*?)=(.*)");
Matcher m = p1.matcher(currentLine);
if(m.find(1) && m.find(2)){
System.out.println("Key: "+m.group(1)+" Value: "+m.group(2));
}

我得到的输出是 密钥:OWSER价值:FireFox

在我的情况下,BR正在削减。这对我来说似乎很奇怪,直到我知道它为什么会以这种方式表现,因为它与PERL完美配合。有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

当你致电m.find(2)时,它会删除前两个字符。 From the JavaDocs(大胆是我的):

  

public boolean find(int start)

     
    

重置此匹配器,然后尝试查找与模式匹配的输入序列的下一个子序列,从指定索引开始。

  

所以,只使用m.find()

String currentLine = "BROWSER=FireFox";
System.out.println("Current Line: "+ currentLine);
Pattern p = Pattern.compile("(.*?)=(.*)");
Matcher m = p.matcher(currentLine);
if (m.find()) {
    System.out.println("Key: "+m.group(1)+" Value: "+m.group(2));
}

输出:

Current Line: BROWSER=FireFox
Key: BROWSER Value: FireFox

See online demo here

答案 1 :(得分:0)

您可以使用String.indexOf查找=的位置,然后String.substring来获取您的两个值:

String currentLine = "BROWSER=Firefox";

int indexOfEq = currentLine.indexOf('=');

String myKey = currentLine.substring(0, indexOfEq);
String myVal = currentLine.substring(indexOfEq + 1);

System.out.println(myKey + ":" + myVal);