begin
dbms_utility.compile_schema(user, false);
end;
我可以获得上面的字符串的正则表达式吗? 我使用下面的正则表达式
Pattern regex = Pattern.compile("begin*dbms_utility.compile_schema(user, false);*end;",Pattern.MULTILINE|Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(newtext);
if (regexMatcher.find()) {
System.out.println(regexMatcher.group(1));
System.out.println("second regex : "+regexMatcher);
答案 0 :(得分:0)
您需要转义一些特殊字符((
,)
,.
)并使用\s
来匹配空格:
"begin\\s*dbms_utility\\.compile_schema\\(user,\\s*false\\);\\s*end;"
请参阅regex demo
请注意,将其与find()
一起使用会在较长的字符串中找到任何子字符串,并且使用带有Matcher#matches()
的表达式只会在整个字符串与模式匹配时返回true。
要获得完整匹配,请使用Matcher.group(0)
获取捕获组值,使用高于0
的索引。
String regex = "begin\\s*(dbms_utility\\.compile_schema\\(user,\\s*false\\);)\\s*end;";
String string = "begin\n dbms_utility.compile_schema(user, false);\nend;";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
查看Java demo。
答案 1 :(得分:0)
Pattern p = Pattern.compile("DS \\#18 \\[([0-9\\.]*)\\\\([0-9\\.]*)\\] Pixel Spacing",
Pattern.MULTILINE|Pattern.DOTALL);
Matcher m = p.matcher( input );
while( m.find() ) {
System.out.println("[ "+m.group( 1 )+", "+m.group( 2 )+" ]");
}