编程比赛中的一道题目

标题:正则表示

正则表达式表示了串的某种规则或规律。恰当地使用正则表达式,可以使得代码简洁、事半功倍。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()相关推荐

  1. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

  2. Java String split方法性能分析

    近期笔者分析一段在线代码的性能时,发现Java String类中split()方法的性能和网上一些帖子的描述并不相同,是以记录澄清. Java String split方法到底有没有使用正则表达式? ...

  3. Java String.split() 特殊字符处理

    前言 jdk 1.8 split函数 注意,split函数的参数是正则表达式.split函数的定义为: /*** Splits this string around matches of the gi ...

  4. Java: String.split(....); 结果很意外

    String txt = "join|公共聊天室||"; String[] paras = txt.splite("\\|"); String t1 = par ...

  5. Java String.split()用法小结

    2019独角兽企业重金招聘Python工程师标准>>> 在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: ...

  6. java String split 方法丢弃末尾的空白字符问题

    问题描述 在使用 split 方法时,末尾的空白字符会被丢弃,但是实际上这个行字符可能是一个文件的内容,没个字段内容是否为空都需要记录,此时 split的此无参数方法就不再适用了. 情景再现 Stri ...

  7. Java String split 使用详解、split 方法存在的一些坑

    String 方法的split 其实是很有学问的,他有很多的特殊情况.我们来梳理一下: 备注:limit 是 split(String regex, int limit ) 方法的第二个参数,&quo ...

  8. java String.split()部分分割符无法识别,需要进行转义

    之前使用String.split()方法进行字符串分割时,发现使用一些特殊的分隔符时,分割后的字符串数组有问题,经查是部分分隔符需要转义,特此记录 /*** 检测 分隔符 是否存在特殊字符* @par ...

  9. java string split的使用

    工作快半年了,每天都在为自己的将来担心,总有一种危机感,生怕某天被淘汰:更多的是,工作中发现了自己的种种不足,希望通过我的努力能弥补过来:下面用代码来阐述我对String类中split方法的理解:虽然 ...

  10. java 正则表达式 table_JavaEdge/Java/Java中正则表达式.md at master · VegTableBird/JavaEdge · GitHub...

    主要用到的是这两个类 - java.util.regex.Pattern - java.util.regex.Matcher. Pattern对应正则表达式,一个Pattern与一个String对象关 ...

最新文章

  1. 总线制和多线制示意图_再谈总线制与多线制的区别
  2. 软件外包业的崛起,掀起电脑培训热潮
  3. (六)api网关服务 zuul-过滤器
  4. 三行代码实现冒泡排序算法
  5. 华为手机android版本升级失败怎么办,华为手机系统更新好吗 华为手机系统更新方法...
  6. 智能门锁到底安不安全?
  7. http是什么,其实很简单
  8. Windows安装Android软件,win7系统安装安卓软件WindowsAndroid的方法
  9. 使用JSONRPC操作附带token(secret)的aria2
  10. 如何视频录制电脑里播放的视频
  11. 如何在简中版 MathType 安装过程中,就能输入产品密匙?
  12. c++获取系统时间实例2
  13. jquery+ajax分页
  14. WordCount 官方源码解读及工程代码
  15. 硕士研究生毕业计算机水平,计算机硕士毕业论文答辩自述
  16. 服务器集群技术的特点和功能
  17. 最简单的MySQL安装教程(数据库免安装版,免安装版,亲测好用) mysql-5.7.33-winx64.zip
  18. 华为 BGP/MPLS VP#实验
  19. 读书笔记-流畅的python(1-6章)
  20. 计算机在黑板前面英语怎么写,计算机多媒体在英语教学中的运用

热门文章

  1. vue获取路径参数和请求参数
  2. c++怎么确定一个整数有几位_《小数乘整数》说课稿
  3. python数组堆叠_数组操作 -拼接与堆叠数组
  4. 【渝粤教育】国家开放大学2018年春季 0408-21T管理学基础 参考试题
  5. [渝粤教育] 中国地质大学 材料力学 复习题
  6. Prophet模型预测商品销售量
  7. adodb.recordset.open方法的参数
  8. 工具使用教程 (一)【Git从原理到入门实用教程】
  9. [USACO19FEB]Cow Dating——找规律
  10. /etc/fstab修改及mkfs(e2label)相关应用与疑问