重写要在Java中使用的正则表达式
我已经编写了重写要在Java中使用的正则表达式,java,regex,Java,Regex,我已经编写了(?检查完整字符串匹配的方法,因此不使用检查子序列匹配的方法。最后,您可以使用该方法获得匹配的子序列字符串 public static void main(String[] args) { Pattern pattern = Pattern.compile("(?<=pp_).*(?=')"); String input = "['newPage', 'pp_vii', -1])"; Matcher m = pattern.matcher(input); boolean a =
(?检查完整字符串匹配的方法,因此不使用检查子序列匹配的方法。最后,您可以使用该方法获得匹配的子序列字符串
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
String input = "['newPage', 'pp_vii', -1])";
Matcher m = pattern.matcher(input);
boolean a = m.find();
if(a){
String out = m.group();
System.out.println("Match : " + out);
}
publicstaticvoidmain(字符串[]args){
Pattern Pattern=Pattern.compile((?您的正则表达式很好。Matcher.matches()
方法仅在完整字符串与模式()匹配时返回true。您应该改用Matcher.find()
来查找与模式()匹配的下一个子序列
这很好。但是,如何获取匹配的内容?String s=matcher.group(0)
和tring pageLabel=matcher.group()
都会引发异常。我调试了m对象及其int[]组总是-1。使用find
和matches
交换行。匹配器有一个索引,在运行matches
后位于字符串末尾,因此这会导致异常。在调用find
后,必须调用group
方法。我更新了答案。
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
String input = "['newPage', 'pp_vii', -1])";
Matcher m = pattern.matcher(input);
boolean a = m.find();
if(a){
String out = m.group();
System.out.println("Match : " + out);
}
Pattern pattern = Pattern.compile("(?<=pp_).*(?=')");
String input = "['newPage', 'pp_vii', -1])";
Matcher m = pattern.matcher(input);
boolean stringMatches = m.matches(); // false
boolean isThereMatch = m.find(); // true
System.out.println(isThereMatch + " " + stringMatches);
System.out.println(m.group());
true false
vii