java正则表达式中的POSIX 字符类和Unicode 块和类别的类介绍
假如现在有一个需求,要你用Java语言来匹配出一个文本里面的所有(英文半角)标点符号,你会怎么写呢?我想大多数人应该是把这些符号都罗列出来,
如:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
但[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]这样写需要转义一下,
结果为:
[-!"\#\$%&'()*+,./:;<=>?@
\^_`\{\|\}~]
然后写到java代码后,有需要转义一次,
变为:
[-!\"\\#\\$%&'()*+,./:;<=>?@\\[\\\\\\]\\^_`\\{\\|\\}~]
这样的代码,细思极恐。
我们先来用java代码验证一下,这个长长的正则能不能用
- String str="1~2-6,C#,1+2=3;@qq.com2^3functon(){}";
- String regex="[-!\"\\#\\$%&'()*+,./:;<=>?@\\[\\\\\\]\\^_`\\{\\|\\}~]";
- Matcher m=Pattern.compile(regex).matcher(str);
- while(m.find()){
- System.out.print(m.group());
- }
输出结果:
~-,#,+=;@.^(){}
很欣慰,正则应该是没错的。但这样的正则看起来挺反胃的,那么有没有简洁的写法呢?答案是有的,可以利用POSIX字符类来实现,正则为:\p{Punct}
- String str="1~2-6,C#,1+2=3;@qq.com2^3functon(){}";
- String regex="\\p{Punct}";
- Matcher m=Pattern.compile(regex).matcher(str);
- while(m.find()){
- System.out.print(m.group());
- }
输出结果:
~-,#,+=;@.^(){}
简直了,是不是对正则又燃起了希望之火,这就是在恰当的时候用POSIX字符类的好处。虽然平时比较少运用POSIX字符类的写法,但在恰当的时机运用起来就会有一种一鸣惊人的感觉。
那么我们来看看POSIX字符类有哪些:
除了POSIX字符类之外,还有一个也知道提一下,那就是Unicode块和类别的类
java正则表达式中的POSIX 字符类和Unicode 块和类别的类介绍的更多相关文章
- Java 正则表达式 中的 任意字符
原来正则表达式中的"."代表的是除换行以外的任意字符,如果要真正代表任意字符,需要把换行符也加进去,但是经过测试"[.\\n]"不生效,可以使用"\\ ...
- Java正则表达式中的捕获组的概念及相关API使用
要弄清这三个方法,首先要弄清Java正则表达式中的捕获组的概念.捕获组也就是Pattern中以括号对“()”分割出的子Pattern.至于为什么要用捕获组呢,主要是为了能找出在一次匹配中你更关心的部分 ...
- 关于 Java正则表达式中的Possessive数量修饰词的理解
关于 Java正则表达式中的Possessive数量修饰词的理解 正则表达式对于数量限定符如 ?, + , *, {n, m} 的匹配默认是贪婪模式,比如: a.*b 匹配 acbab 的结果是 ...
- JAVA正则表达式中如何匹配反斜杠 \
有时候我们需要匹配反斜杠,你可能会把对应的正则表达式写成 "\\" 然后可能会有如下输出: Exception in thread "main" java.ut ...
- Java基础中字符串与字符的注意点!
在Java中,字符的表达与字符串的表达是不一样的!话不多说,直接上代码!!! String a="a"; char a='a'; 其中他们的引号是不一样的
- java正则表达式 需要转义的字符
特别字符 说明 $ 匹配输入字符串的结尾位置.如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或‘\r'.要匹配 $ 字符本身,请使用 \$. ( ) 标记一个子 ...
- Java 正则表达式获取两个字符中间的内容
利用 正则表达式 获取两个字符串中间的值 直接上代码吧,不是很难. public static void main(String[] args) { // 内容 String value = &quo ...
- Java正则表达式的解释说明
1.字符x 字符 x.例如a表示字符a\\ 反斜线字符.在书写时要写为\\\\.(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1 ...
- Java——正则表达式
题目: java中提供了对正则表达式的支持. 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码. 注意:只填写缺少代码,不要 ...
随机推荐
- 【.Net】在windows server 2016 和Windows10这些server上安装.net fw3.5
一般就是打开server manager. 一直next到add feature 讲net3.5勾选 发现需要指定一个路径是什么 source\sxs之类的 下载microsoft-windows-n ...
- [分享]Active-HDL 9.2 安装
Download 点击下载Active-HDL 9.2 How to Install ? 解压后依次进行以下操作 1.运行Active_HDL_9.2sp1_main_setup.exe,允许程序所有 ...
- DOM中的outerHTML,innerHTML,outerText,innerText的区别
--转自http://blog.163.com/yw_0721/blog/static/7164579720102932157759/ 简单的说innerHTML和outerHTML.innerTex ...
- FICO年终完全手册
FICO年终完全手册 一:系统增加配置部分 1,FBN1增加凭证号码范围,OBH2维护会计凭证号码到新的会计年度 2,KS13检查成本中心的有效期 3,KA23检查成本要素的有效期 4,KL03检查作 ...
- 键盘控制div移动并且解决停顿问题(原生js)
<html> <head> <title>键盘控制div移动,解决停顿问题</title> <meta charset="utf-8&q ...
- 判断是否在同一个线程-GetCurrentThreadId()用法
线程 在一个程序中,这些独立运行的程序片断叫作"线程"(Thread),利用它编程的概念就叫作"多线程处理".利用线程,用户可按下一个按钮,然后程序会立即作出响 ...
- 【二】jquery之基础概念与jquery对象与dom对象的区别及混合使用
一:jquery基本概念 1.jquery是一个javascript框架,它是一个轻量级的js库 2.当下流行的js库有: jquery MooTools Prototype 3.$(ducoment ...
- 远程连接MongoDB报“Network is unreachable”错误的解决方法
解决办法:/etc/mongod.conf 里把127.0.0.1 改成 0.0.0.0
- git 修改文件夹名字后如何提交
将文件夹名字从 v1.0.1 修改为 v1.0.2 git add --ignore-removal "v1.0.2/xsxsx"
- JavaSE习题 继承接口和泛型
问答题: 1.子类在什么情况下可以继承父类友好成员? 答:在同一个包内 2.子类通过怎样的方法可以隐藏继承的成员变量? 答:声明一个与父类相同变量名的成员变量 3.子类重写继承的方法原则是什么? 答: ...