我有字符串"SELECTOR('(namespace=''ar.com.osde.reintegros'' and eventname=''generacionReintegro'')')"
。
我需要返回"SELECTOR("
和")"
之间的字符串,结果应为:'(namespace=''ar.com.osde.reintegros'' and eventname=''generacionReintegro'')'
。
我的正则表达式代码是:
public static String extractSelector(String txt){
Pattern pattern = Pattern.compile("^SELECTOR\\((.*)\\)$");
Matcher m = pattern.matcher(txt);
String s = null;
while (m.find()) {
s = m.group(1);
}
return s;
}
其中txt = "SELECTOR('(namespace=''ar.com.osde.reintegros'' and eventname=''generacionReintegro'')')"
但这始终会返回null
。那是为什么?
答案 0 :(得分:-1)
此jdoodle演示了该部分代码的工作原理(仅为txt
添加了声明并删除了return
语句)。你确定之前txt
没有做任何事吗?
鉴于您的代码,唯一的解释是txt
与模式完全不匹配...这是因为while
- 循环根本没有执行(因此find
始终是SELECTOR
假)。
也许(
和左括号SELECTOR
之间有空格,也许System.out.println("\""+txt+"\"");
可以放在小写中。为了调试这个,你可以编写
{{1}}
在实际匹配之前,或使用IDE的调试器功能执行此操作。引号用于使空格更明确。