[英]java regex for multiline String
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);
你需要逃避一些特殊字符( (
, )
, .
),并使用\\s
匹配空白:
"begin\\s*dbms_utility\\.compile_schema\\(user,\\s*false\\);\\s*end;"
请注意,将它与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演示 。
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 )+" ]");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.