- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Java之Pattern.compile函数用法详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
除了Pattern Pattern.compile(String regex), Pattern类的compile()方法还有另一个版本: Pattern Pattern.complie(String regex,int flag),它接受一个标记参数flag,以调整匹配的行为。 flag来自以下Pattern类中的常量:
编译标记 | 效果 |
---|---|
Pattern.CANON_EQ | 两个字符当且仅当它们的完全规范分解相匹配时,就认为它们是匹配的,例如,如果我们指定这个标记,表达式a\u030A就会匹配字符串?。在默认的情况下,匹配不考虑规范的等价性 |
Pattern.CASE_INSENSITIVE(?i) | 默认情况下,大小写不敏感的匹配假定只有US-ASCII字符集中的字符才能进行。这个标记允许模式匹配不必考虑大小写(大写或小写)。通过指定UNICODE_CASE标记及结合此标记,基于Unicode的大小写不敏感的匹配就可以开启了,也可以使用嵌入的标记表达式?i开启,下同 |
Pattern.COMMENTS(?x) | 在这种模式下,表达式中的空格(不是指\s,单纯指空格)将被忽略掉,并且以#开始直到行末的注释也会被忽略掉。通过嵌入的标记表达式也可以开启Unix的行模式 |
Pattern.DOTALL(?s) | 在dotall模式中,表达式“.”匹配所有字符,包括行终结符。默认情况下,“.”表达式不匹配行终结符 |
Pattern.MULTLINE(?m) | 在多行模式下,表达式^和$分别匹配一行或输入字符串的开始和结束。默认情况下,这些表达式仅匹配输入的完整字符串的开始和结束 |
Pattern.UNICODE_CASE(?u) | 当指定这个标记,并且开启CASE_INSENSITIVE时,大小写不敏感的匹配将按照与Unicode标准相一致的方式进行。默认情况下,大小写不敏感的匹配假定只能在US-ASCII字符集中的字符才能进行 |
Pattern.UNIX_LINES(?d) | 在这种模式下,在.、^和$行为中,只识别行终结符\n |
在这些标记中 Pattern.CASE_INSENSITIVE(?i) ,Pattern.MULTLINE(?m),==Pattern.COMMENTS(?x)==中特别有用.
使用示例如下: 我们可以通过“或”( | )操作组合多个标记的功能 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import
java.util.regex.Matcher;
import
java.util.regex.Pattern;
public
class
ReFlags {
public
static
void
main(String[] args) {
Pattern p=Pattern.compile(
"^java"
,Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
/*
* 使用Pattern.CASE_INSENSITIVE(大小写不敏感的匹配)和Pattern.MULTILINE(多行模式)标记,忽略大小写地匹配所有以java开头的行
*/
Matcher m=p.matcher(
"java has regex\nJava has regex\n"
+
"JAVA has pretty good regular expression\n"
+
"Regular expressions are in JavA"
);
while
(m.find()) {
System.out.println(m.group());
//输出已匹配的部分
}
}
}
|
输出结果:
1
2
3
|
java
Java
JAVA
|
使用Pattern.COMMENTS(?x)的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import
java.util.regex.Matcher;
import
java.util.regex.Pattern;
public
class
ReFlags_Comments {
public
static
void
main(String[] args) {
/*
* 不使用Pattern.COMMENTS(不启动注释)
*/
String s="123";
Pattern p1=Pattern.compile(" (\\d+)+#test comments");
Matcher m1=p1.matcher(s);
System.out.println(m1.matches());//false
/*
* 正则表达式中使用启动注释的标记
*/
Pattern p2=Pattern.compile("(?x) (\\d+)+#test comments");
Matcher m2=p2.matcher(s);
System.out.println(m2.matches());//true
/*
* 参数中使用Pattern.COMMENTS以启动注释
*/
Pattern p3=Pattern.compile(
" (\\d+)+#test comments"
,Pattern.COMMENTS);
Matcher m3=p3.matcher(s);
System.out.println(m3.matches());
//true
}
}
|
运行结果:
1
2
3
|
false
true
true
|
到此这篇关于Java之Pattern.compile函数用法详解的文章就介绍到这了,更多相关Java之Pattern.compile函数内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/huangjhai/article/details/104096183 。
最后此篇关于Java之Pattern.compile函数用法详解的文章就讲到这里了,如果你想了解更多关于Java之Pattern.compile函数用法详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在运行 compile test:compile it:compile经常并且...希望将击键次数减少到类似 *:compile 的数量。 .不过,它似乎不起作用。 $ sbt *:compile
有人可以给我这个问题的提示(或整个解决方案!): 在 Clojurescript 项目中,如何自动将编译日期/时间硬编码在符号中,以便在使用应用程序时显示? 谢谢。 最佳答案 有多种解决方案: 使用l
我是 ember.js 框架的新手,使用 ruby on rails 和 ember.debug.js -v 1.10.1(最新版本)。我一直在网上看到 ember 更改了这个最新的补丁,但我不知
我不是 Fortran 程序员(只是短暂的经验),但我需要编译一个部分用 F77 编写的程序。在我之前有人用 Absoft 编译器编译过它,但现在我需要在另一台机器上用 g77 重复这个过程。对于 A
我运行命令 mvn clean package 我得到了上面的错误我的 pom 是: http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
我有以下问题。 我想在测试编译阶段排除一些.java文件(** / jsfunit / *。java),另一方面,我想在编译阶段包括它们(id我使用tomcat启动tomcat:运行目标) ) 我的p
符合 wikipedia A compiler is a computer program (or set of programs) that transforms source code writt
我想构建项目,但出现如下错误: 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile
当我通过右键单击项目名称进行 Maven 安装时,出现以下错误: [INFO] Scanning for projects... [WARNING] [WARNING] Some proble
我是 Maven 的新手,我想将我的应用程序导入到 Maven。和以前一样,我想将我的 ejb 项目中的类引用到我的 war 项目中。我在类中没有错误,但是如果我在我的父项目上安装 maven,那么我
当我将 ASP.NET Web 应用程序部署到生产环境时,我使用配置转换来删除 debug="true"来自 .但是,就在今天,我注意到 web.config 中的另一个部分如下所示:
This question already has answers here: Maven Compilation Error: (use -source 7 or higher to enable
我正在使用 Maven 3.0.5 和 Spring Tool Source 3.2 并安装了 Maven 插件。当我尝试执行“运行方式---> Maven 安装”时,出现以下错误: [INFO] S
我试图用 AngularJS 创建我自己的递归指令,它调用自己以漂亮的 JSON 格式转换 View 中的对象。好吧,首先我使用 ng-include 调用带有模板的脚本,在其中使用 ng-if 验证
可以通过 @suppress annotation使用Google的Closure Compiler在每个文件的基础上禁止显示警告。但是,似乎无法同时抑制多个警告-例如globalThis和check
假设一个拥有 10 到 20 年经验的熟练开发人员从未构建过编译器或模拟器,哪一个会更具挑战性? 你能比较一下会成为障碍的问题吗? 谢谢。 最佳答案 仿真和编译是完全不同的,但由于两者都被认为是“低级
最近发现Vim中有一个命令叫compiler。您可以使用任何常见的编译器(例如,:compiler gcc、:compiler php 等)来调用它,但它似乎没有任何立竿见影的效果。 我在联机帮助页上
我试图从 spring.io 指南中部署最简单的应用程序 Guide 但是我有一些麻烦.. 我做了什么: 创建的项目。 (来自 spring.io 教程) 下载 heroku CLI 在 Intell
每当进行 Maven Build..>clean install 时,我都会遇到此错误。我尝试过使用不同版本的插件并添加 testFailureIgnore 属性,但问题仍然存在。请找到下面的 POM
我有一个 web 应用程序,我尝试使用 maven 进行编译,不幸的是,在执行 mvn clean package 时它不起作用。 stackoverflow 上有很多问题看起来都一样,但没有解决了我
我是一名优秀的程序员,十分优秀!