我是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+*+)
,但不确定如果包含引号(如果存在)。任何帮助都将非常感激。
答案 0 :(得分:2)
一个简单的解决方案是将其加载为Properties,这将完全解析您正在寻找的解析。否则,只需read each line和split 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/