非常好用的正则表达式"\\s+" - 匹配任意空白字符
说起来,博主使用过的正则场景虽然不多,但是就是在这当中,我发现"\\s+"真好用!
详解 "\\s+"
正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v]
- \f -> 匹配一个换页
- \n -> 匹配一个换行符
- \r -> 匹配一个回车符
- \t -> 匹配一个制表符
- \v -> 匹配一个垂直制表符
而“\s+”则表示匹配任意多个上面的字符。另因为反斜杠在Java里是转义字符,所以在Java里,我们要这么用“\\s+”.
那么问题来了,“\\s+”有啥使用场景呢?
API测试中,替换测试模板中的数据
在API自动化测试中,我们经常要用xml,或者json文件,来保存API payload。 比如下面这个模板:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userInvite>
<toEmail>xxxx@gmail.com</toEmail>
<toUserId>%s</toUserId>
<fromUserId>%s</fromUserId>
<groupId>123</groupId>
<inviteMetadataId>1</inviteMetadataId>
<status>created</status>
<clilentId>xxxx</clilentId>
<inviteProperties>
<inviteProperty>
<key>key</key>
<value>value</value>
</inviteProperty>
<inviteProperty>
<key>subject</key>
<value>is inviting you</value>
</inviteProperty>
</inviteProperties>
</userInvite>
而在测试的时候,我们就经常要替换模板中的数据,去测试API的逻辑。比如我要去掉key为subject的inviteProperty, 然后再Call这个API,怎么办呢?
OK,答案很明显,我们只要替换他们就可以了,而这时候\\s+就可以派上用场了。
比如我们可以直接将其替换成空格:
payload.replaceFirst("<inviteProperty>\\s+<key>subject</key>\\s+<value>is inviting you</value>\\s+</inviteProperty>", "");
这里的\\s+可以替换掉关键字之间的所有空白字符。
\\s+在经典算法题:单词反转中的使用
有这么一个经典算法题:
输入一串字符,然后按着单词倒叙输出
比如:
输入 "the sky is blue",
输出 "blue is sky the".
这题如果使用String的Split方法就非常方便,我们可以根据空格把字符串分成单词数组,这样就可以倒着输出单词就可以了。
但是如果单纯的使用空格就会有很多缺陷,比如:
s.trim().split(" ");
如果输入为这样就会有问题 “a b”,用上面的代码,我们就会分拆出下面的结果:

最后分解出了四个元素!
很明显跟我们的预期不一样,我们希望是只剩两个单词,所以如果使用\\s+,一切就完美多了!

最后给出完整算法解决方案:
public static String reverseWords(String s)
{
String[] wordsArray = s.trim().split("\\s+");
StringBuilder result = new StringBuilder();
for(int i = wordsArray.length - 1; i >= 0 ; i--)
{
if(i == 0)
{
result.append(wordsArray[i]);
}
else
{
result.append(wordsArray[i] + " ");
}
}
return result.toString();
}
总结
啥也不说了,何不试试呢?
如果您看了本篇博客,觉得对您有所收获,请点击下面的 [推荐]
如果您想转载本博客,请注明出处大卡的博客[http://www.cnblogs.com/jinsdu/]
如果您对本文有意见或者建议,欢迎留言
非常好用的正则表达式"\\s+" - 匹配任意空白字符的更多相关文章
- C#正则表达式匹配任意字符
原文:C#正则表达式匹配任意字符 不得不说正则很强大,尤其在字符串搜索上 匹配任意字符,包括汉字,换行符: [\s\S]*. 版权声明:本文为博主原创文章,未经博主允许不得转载.
- js正则表达式验证、匹配数字、匹配字符串、匹配中文、匹配任意字符备忘录
本文转自:91博客 :原文地址:http://www.9191boke.com/235792704.html 正则表达式或“regex”用于匹配字符串的各个部分,下面是我创建正则表达式的备忘录.包括一 ...
- VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :
VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: ...
- Python 正则表达式 匹配任意字符
.(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符 >>> >>> r=re.compile(r'.*')>>> ...
- perl 正则表达式之匹配
一.用m//进行匹配 上篇用双斜线的写法表示模式,事实上是m//的简写,所谓简写,就是当用双斜线作为定界符的时候,可有省略开头的m. 不使用简写的时候,可以使用任何定界符表示模式,m().m<& ...
- JS 正则表达式否定匹配(正向前瞻)
引言:JS 正则表达式是 JS 学习过程中的一大难点,繁杂的匹配模式足以让人头大,不过其复杂性和其学习难度也赋予了它强大的功能.文章从 JS 正则表达式的正向前瞻说起,实现否定匹配的案例.本文适合有一 ...
- 【RegExp】JavaScript中正则表达式判断匹配规则以及常用方法
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符 ...
- JavaScript中正则表达式判断匹配规则以及常用的方法
JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...
- 正则表达式通用匹配ip地址及主机检测
在使用正则表达式匹配ip地址时如果不限定ip正确格式,一些场景下可能会产生不一样的结果,比如ip数值超范围,ip段超范围等,在使用正则表达式匹配ip地址时要注意几点: 1,字符界定:使用 \< ...
随机推荐
- 20169210《Linux内核原理与分析》第七周作业
第一部分:实验 首先还是网易云课堂的实验内容,扒开系统调用的三层皮(下),分为两部分: 1.给MenuOS增加time和time-asm命令 2.系统调用在内核代码中的处理过程 给MenuOS增加ti ...
- Creating custom datatypes using the umbraco usercontrol wrapper
本篇文章介绍的是基于UmbracoCMS技术搭建的网站所使用的相关技术. 1. 需求 Umbraco CMS的dataType中有richTexhEditor控件,但是它不是太完善,比如没有 ...
- RichTextBox选中文本时往自己的其他的位置实现拖拽
private void Form1_Load(object sender, EventArgs e) { richTextBox1.AllowDrop = true; richTextB ...
- 设计模式 - 观察者模式(Observer Pattern) 详细说明
观察者模式(Observer Pattern) 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26583157 版权全部 ...
- oracle15 pl/sql 分页
PL/SQL分页 编写分页过程 无返回值的存储过程 古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解.首先是掌握最简单的存储过程,无返回值的存储过程: ...
- js验证邮箱
<html> <head> <script> function verifyAddress(obj) { var email = obj ...
- Ⅰ.AngularJS的点点滴滴--引导
AngularJS已经被很多人像炒冷饭一样炒过啦,大部分都是直接复制官方文档没有说明一些注意事项,不过什么都要从头开始吧 页面引导实例化 1.自动实例化 <html> <script ...
- Tomcat Server 原理
构成: 1.server代表整个catalina serverlet容器 2.service:由一个或多个connector以及一个共享的engine处理引擎组成 3.connector 在指定端口上 ...
- dubbo注册服务IP解析异常及IP解析源码分析
在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问. 比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11 这样就导致这个Service永远也无 ...
- Install-User.ps1
Install-User.ps1 function Install-User { param( [Parameter()] [string]$ComputerName = $env:computern ...