正则表达式与java String.split()
编程比赛中的一道题目
标题:正则表示
正则表达式表示了串的某种规则或规律。恰当地使用正则表达式,可以使得代码简洁、事半功倍。java的很多API都支持正则表达式作为参数。其中的String.split就是这样。
看下面的代码,其意图为把一个或多个空格或逗号、句号分开的单词分离出来。即获得数组为:
["cat","doc","desk","push","last","this","is","what","must","be"]
请在划线处填入适当代码,取得要求的效果。
String s = "cat dog,desk push last, this is what. must be";
String[] ss = s.split("______________________________"); //填空位置
for(String k: ss) System.out.println(k);
注意:只提交划线部分缺少的内容,不要写其它附加内容,比如:说明性的文字或已经存在的代码。
为了解决上面的题目,查阅了最终的解决方案。
String[] ss1 = s.split("\\W+");
for(String k: ss1) System.out.println("s1:"+k);
通过该操作可以获得正确结果:
s1:cat
s1:dog
s1:desk
s1:push
s1:last
s1:this
s1:is
s1:what
s1:must
s1:be
另外在获得正确答案之前,有以下思路:
String[] ss = s.split("\\,|\\s+|\\.");
for(String k: ss) System.out.println(k);
获得结果如下:
cat
dog
desk
push
last
this
is
what
must
be
注意其中多出了两行空行,这其实是由于|操作中只能起到单个选项的作用。不能起到并集作用。
可供参考:
在正则表达式中具有特殊含义的字符
特殊字符 |
描述 |
. | 表示任意一个字符 |
[abc] | 表示a、b或c中的任意一个字符 |
[^abc] | 除a、b和c以外的任意一个字符 |
[a-zA-z] | 介于a到z,或A到Z中的任意一个字符 |
\s | 空白符(空格、tab、换行、换页、回车) |
\S | 非空白符 |
\d | 任意一个数字[0-9] |
\D | 任意一个非数字[^0-9] |
\w | 词字符[a-zA-Z_0-9] |
\W | 非词字符 |
表示字符出现次数的符号
表示次数的符号 |
描述 |
* | 0 次或者多次 |
+ | 1 次或者多次 |
? | 0 次或者 1 次 |
{n} | 恰好 n 次 |
{n, m} | 至少 n 次,不多于 m 次 |
public String[] split(String regex)
- 根据给定正则表达式的匹配拆分此字符串。 其中regex必须为正则表达式。
- 如上面表格,与普通字符串不同,很多字符代表特殊意义,因此如",""."之前都要加上双右斜线\\,第二个表格中可以规定一个分割符重复的次数,如\\,{4},只有当出现",,,,"分割字符串。
- 使用多个不同字符分割字符串,可以使用|符号连接不同字符。如第二种解决方案,查看结果也会发现,不能同时分割字符串的情况,只能依次按表达式,单独分次分割字符串,于是出现了两行空格。
- 另外单独使用|分割字符串时记得使用\\|。
- 在完成上面题目时前面被“把一个或多个空格或逗号、句号分开的单词分离出来”误导,于是出现了第二种解决方案,其实我们并没有注意到如第一个表格中的特殊含义字符,使用这些特殊字符搭配第二个表格的出现次数符号,很容解决了上面的问题。
- 不知道你是否理解了呢?如果还不理解,可以试着先使用单独字符试验一遍,在搭配不同字符,由简入繁,获得最终理想的结果。
转载于:https://www.cnblogs.com/chengwaiting/p/3612243.html
正则表达式与java String.split()相关推荐
- java string()函数_转载java String.split()函数的用法详解
转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...
- Java String split方法性能分析
近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清. Java String split方法到底有没有使用正则表达式? ...
- Java String.split() 特殊字符处理
前言 jdk 1.8 split函数 注意,split函数的参数是正则表达式.split函数的定义为: /*** Splits this string around matches of the gi ...
- Java: String.split(....); 结果很意外
String txt = "join|公共聊天室||"; String[] paras = txt.splite("\\|"); String t1 = par ...
- Java String.split()用法小结
2019独角兽企业重金招聘Python工程师标准>>> 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: ...
- java String split 方法丢弃末尾的空白字符问题
问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...
- Java String split 使用详解、split 方法存在的一些坑
String 方法的split 其实是很有学问的,他有很多的特殊情况.我们来梳理一下: 备注:limit 是 split(String regex, int limit ) 方法的第二个参数,&quo ...
- java String.split()部分分割符无法识别,需要进行转义
之前使用String.split()方法进行字符串分割时,发现使用一些特殊的分隔符时,分割后的字符串数组有问题,经查是部分分隔符需要转义,特此记录 /*** 检测 分隔符 是否存在特殊字符* @par ...
- java string split的使用
工作快半年了,每天都在为自己的将来担心,总有一种危机感,生怕某天被淘汰:更多的是,工作中发现了自己的种种不足,希望通过我的努力能弥补过来:下面用代码来阐述我对String类中split方法的理解:虽然 ...
- java 正则表达式 table_JavaEdge/Java/Java中正则表达式.md at master · VegTableBird/JavaEdge · GitHub...
主要用到的是这两个类 - java.util.regex.Pattern - java.util.regex.Matcher. Pattern对应正则表达式,一个Pattern与一个String对象关 ...
最新文章
- 总线制和多线制示意图_再谈总线制与多线制的区别
- 软件外包业的崛起,掀起电脑培训热潮
- (六)api网关服务 zuul-过滤器
- 三行代码实现冒泡排序算法
- 华为手机android版本升级失败怎么办,华为手机系统更新好吗 华为手机系统更新方法...
- 智能门锁到底安不安全?
- http是什么,其实很简单
- Windows安装Android软件,win7系统安装安卓软件WindowsAndroid的方法
- 使用JSONRPC操作附带token(secret)的aria2
- 如何视频录制电脑里播放的视频
- 如何在简中版 MathType 安装过程中,就能输入产品密匙?
- c++获取系统时间实例2
- jquery+ajax分页
- WordCount 官方源码解读及工程代码
- 硕士研究生毕业计算机水平,计算机硕士毕业论文答辩自述
- 服务器集群技术的特点和功能
- 最简单的MySQL安装教程(数据库免安装版,免安装版,亲测好用) mysql-5.7.33-winx64.zip
- 华为 BGP/MPLS VP#实验
- 读书笔记-流畅的python(1-6章)
- 计算机在黑板前面英语怎么写,计算机多媒体在英语教学中的运用
热门文章
- vue获取路径参数和请求参数
- c++怎么确定一个整数有几位_《小数乘整数》说课稿
- python数组堆叠_数组操作 -拼接与堆叠数组
- 【渝粤教育】国家开放大学2018年春季 0408-21T管理学基础 参考试题
- [渝粤教育] 中国地质大学 材料力学 复习题
- Prophet模型预测商品销售量
- adodb.recordset.open方法的参数
- 工具使用教程 (一)【Git从原理到入门实用教程】
- [USACO19FEB]Cow Dating——找规律
- /etc/fstab修改及mkfs(e2label)相关应用与疑问