正则表达式\\s+ - 匹配任意空白字符
原文
http://www.cnblogs.com/jinsdu/p/4526858.htm
说起来,博主使用过的正则场景虽然不多,但是就是在这当中,我发现"\\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+ - 匹配任意空白字符相关推荐
- 正则表达式“\\s+“ 匹配任意空白字符
正则表达式中\s匹配任何空白字符,包括空格.制表符.换页符等等, 等价于[ \f\n\r\t\v] \f -> 匹配一个换页 \n -> 匹配一个换行符 \r -> 匹配一个回车符 ...
- php正则 网址,PHP正则表达式如何匹配任意类型网址
PHP正则表达式匹配任意类型网址的方法:首先打开相应的代码文件:然后修改匹配网址的正则为"^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*[\..]) ...
- 正则表达式的匹配模式
模式 描述 \w 匹配字母数字及下划线 \W 匹配非字母数字下划线 \s 匹配任意空白字符,等价于 [\t\n\r\f]. \S 匹配任意非空字符 \d 匹配任意数字,等价于 [0-9] \D 匹配任 ...
- Python Re 正则表达式 数据匹配提取 基本使用
Python re 正则表达式 数据匹配提取 基本使用 小洲提示:代码可直接复制在编译器中运行,方便更好的理解 文章目录 Python re 正则表达式 数据匹配提取 基本使用 前言 一.导入库,内置 ...
- python正则表达式模糊匹配_python 正则表达式
正则表达式的作用:用来匹配字符串 一.字符串方法 字符串提供的方法是完全匹配,不能进行模糊匹配 s = 'hello world' # 字符串提供的方法是完全匹配,不能进行模糊匹配 print(s.f ...
- VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,倒数第二列, 匹配任意一个字符 :...
VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下: ...
- perl正则表达式匹配任意单字符_PHP七天系列之正则表达式
正则表达式 正则表达式被用来检索或替换那些符合某个模式的文本内容. 许多程序设计语言都支持利用正则表达式进行字符串操作.例如:JavaScript.PHP.ASP.JAVA.Perl.C#..NET. ...
- 正则匹配任意字符(常用正则表达式的书写)
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符串的 ...
- 关于正则表达式匹配任意字符
关于正则表达式匹配任意字符 今天在Java中想使用正则表达式来获取一段文本中的任意字符.于是很随意得就写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现 ...
最新文章
- 8 一点就消失_微信富二代男友转账20w后,却在见面前一秒消失??...
- 腾讯视频手机app下载安装_腾讯视频怎么签到
- Java 字符串性能对比
- Windows Communication Foundation from msdn
- 基本BASH SHELL脚本命令——Linux系统管理命令-检测程序、检测磁盘空间
- Julia: Dict中元素的顺序:是无序的!
- php单例模式详解,PHP 单例模式解析和实战
- 机器学习(周志华) 第八章集成学习
- SiamFC代码讲解,推理测试讲解
- css如何修改行内样式
- 工程矩阵理论 Hermite 矩阵
- 如何将ape无损音转码为wav文件
- 六万字带你一次性速通python爬虫基础
- Appium基础 — uiautomatorviewer定位工具
- UE4中的玩家类UPlayer、ULocalPlayer 和 UNetConnection
- python音乐可视化壁纸_Python 制作一个漂亮的音乐节奏可视化效果
- 智能小区监控、报警、灯光联动三位一体安全防范系统
- Jdeveloper 10g开发体验之二
- Docker创建容器找不到网卡:Error response from daemon: network xxxx not found
- 【专题5: 硬件设计】 之 【4.DC-DC/直流降压模块(LM7805降压模块)】