我有一些字符串,在阳光灿烂的日子里看起来像
'abcd' => 'efgh'
我希望在
等捕获组中获得abcd
和efgh
"'([^']*)'\s*=>\s*'([^']*)'"
我现在的问题是,那个=>或者\\'可能出现在捕获序列中。我已经尝试了
"'([^']|[\\\\^]*)'\s*=>\s*'([^']|[\\\\']*)'"
但这并没有让我达到预期的效果。 如何过滤掉那些值?
答案 0 :(得分:2)
当涉及解析文本时,正则表达式不是正确的选择。
解析例如包括计算反斜杠,引号等功能。
使用解析器库(如 ANTLR ),或使用半健壮的正则表达式解决方案。
答案 1 :(得分:0)
如果你想在" =>"之前和之后获得这些字符串。你可以用这个:
String s = "'ab'cd' => 'e\\fg\\'h'";
Pattern p = Pattern.compile("'(.+)'\\s\\=>\\s'(.+)'");
Matcher m = p.matcher(s);
if (m.matches()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
你会得到" ab' cd"和" e \ fg \' h"在这个具体案例中。