字符串的Java正则表达式模式

时间:2013-02-01 13:12:59

标签: java regex

我是regex的新手。我正在寻找匹配以下模式的正则表达式并提取字符串,

 key1=test1
 key2="test1" // which will extract test1 stripping quotes
 key3=New test
 key4=New" "test // which will extract New" "test - as it is if the quotes come in between

我尝试使用\\s*(\\S+)\\s*=\\s*(\\S+*+),但不确定如果包含引号(如果存在)。任何帮助都将非常感激。

4 个答案:

答案 0 :(得分:2)

一个简单的解决方案是将其加载为Properties,这将完全解析您正在寻找的解析。否则,只需read each linesplit the string在第一个“=”。

答案 1 :(得分:2)

这是一个没有正则表达式的解决方案,以避免嵌套引号出现问题:

String extractValue(String input) {
  // check if '=' is present here...
  String[] pair = input.split("=", 2);
  String value = pair[1];
  if (value.startsWith("\"") && value.endsWith("\"")) {
      return value.substring(1, value.length() - 1);
  }
  return value;
}

基本上这不是没有正则表达式,因为使用了split(),但它并没有像你计划使用正则表达式那样使用正则表达式。

答案 2 :(得分:0)

您可以使用^([^=]+)=("([^"]*)"|([^"].*))$,但答案会显示在第三组或第四组中,具体取决于该值是否被引用,因此您需要同时检查两者并拉出哪一个不为空。< / p>

答案 3 :(得分:0)

对于正则表达式,如果要在正则表达式中包含",只需使用\\"将其转义即可。无论您想要实现什么,请先在http://www.regexpal.com/

直接测试