JAVA 正则匹配遇到的一个问题_java 正则 /i 不生效-程序员宅基地

技术标签: python  java  正则  

帮哥大的同学做python转Java的编程style题时遇到的问题:

问的大致是这样的,统计文本里单词的个数,需要把非字母和数字的字符给去掉,用了两段不同的代码,发现运行结果里对有些单词的统计数量不一致:

代码是这样的:

code1:

for(int i=0;i<line.length();i++ ){
    			char ch = line.charAt(i);
    			if(!Character.isLetterOrDigit(ch)) sbtmp.append(' ');
    			else sbtmp.append(Character.toLowerCase(ch));
    		}

还有一段比较简单,用了String的replaceAll方法

code2:

line.replaceAll("\\W+", " ").toLowerCase()+" ";

最终结果上面的代码是正确的,下面一段代码运行结果会比实际值小一些。通过打印除了有差异行的处理结果,差别在这里:

原文:
Charlotte so _very_ plain--but then she is our particular friend."
code1处理结果:
charlotte so  very  plain  but then she is our particular friend 
code2处理结果:
charlotte so _very_ plain but then she is our particular friend 

看到正则表达式的规范里才知道:

\w :匹配包括下划线的任何单词字符,等价于 [A-Z a-z 0-9_]
\W :匹配任何非单词字符,等价于 [^A-Z a-z 0-9_]




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/superli90/article/details/46672881

智能推荐

如何设置JPanel大小_jpanle调大小-程序员宅基地

文章浏览阅读4.3w次,点赞30次,收藏41次。转自:http://lookbing.iteye.com/blog/518139_jpanle调大小

关于Linux下root密码的问题-程序员宅基地

文章浏览阅读95次。 这几天看到一个同学进不去他的Linux下的root权限,su root的时候让他敲root的密码他自己都不知道。貌似这个密码是当时装Linux的时候设的,如果自己当时不设一下的话,系统就会自动给随机一个密码给你。据说是为了安全性。那他怎么获得他的root权限呢?sudo固然可以短暂获得,但那终究是扬汤止沸。下面介绍一下做法。sudo passwd root 然后输入自己的密码,...

openstack调整实例大小_openstack 调整实例大小-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏11次。新建实例类型2C-4G-20G修改controller和各个computer节点的nova.cnf文件vim /etc/nova/nova.conf[DEFAULT]allow_resize_to_same_host=Truescheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,Serv_openstack 调整实例大小

java笔试面试总结_java 笔试减少去同一地方的次数-程序员宅基地

文章浏览阅读382次。java笔试面试总结java基础基础多线程虚拟机数据库Spring网络dubbojava基础基础Object类常用的方法有哪些?wait:final方法,无法被重写。作用:阻塞当前线程,且当前线程必须拥有此对象的monitor(即锁)notify:final方法,无法被重写。作用:唤醒一个正在等待该对象monitor的线程。如果有多个线程都在等待该对象的monitor,只唤醒一个n..._java 笔试减少去同一地方的次数

STP,RSTP,MSTP学习_mstp 名词定义 bid pid-程序员宅基地

文章浏览阅读666次。转载至华为官方技术文档,只做笔记参考,不作它用。定义以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出生成树协议STP(Spanning Tree Protocol)。与众多协议的发展过程一样,生成树协议也是随着网..._mstp 名词定义 bid pid

Centos7.4网卡配置_centos7.4配置网卡-程序员宅基地

文章浏览阅读1.2k次。Centos7.4网卡配置1、Linux操作系统安装完毕,那接下来如何让Linux操作系统能上外网呢?如下为Linux服务器配置IP的方法。Linux服务器网卡默认配置文件在/etc/sysconfig/network-scripts/下,命名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0表示第一块网卡,eth1表示第二块网卡,依次类推。修改服务器网卡IP地址命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0 (注CentOS7网卡名i_centos7.4配置网卡

随便推点

Mac os 配置JDK,SDK环境变量_mac java sdk8-程序员宅基地

文章浏览阅读6.2k次。一、下载安装JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html二、安装完成启动终端查找jdk版本开一个终端,输入java -version,将会显示出jdk版本_mac java sdk8

安装 SQL Server 2012/2014 vc_red.msi出现错误怎样解决?_sql server2012安装后出现vc_red.msi-程序员宅基地

文章浏览阅读3.6w次,点赞7次,收藏15次。安装提示“无法访问您试图使用的功能所在的网络位置。单击“确定”重试,或在下面的框中输入包含安装程序包”vc_red.msi“的文件夹的路径。我选择 光盘上VC10SP1\x86\vc_red.msi 提示 vc_red,msi is not a valid installation package for the product Microsoft Visual C++ 2010 x64 _sql server2012安装后出现vc_red.msi

有n个人围成一圈,顺序排号。从第一个人开始报号(从1到3报数),凡报到3的的人退出圈子,问最后留下的是原来第几号的那位。_编写程序,有n个人围成一圈,顺序编号,从第一个人开始按1、2、3顺序报数,凡报 到3的-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏4次。题目有n个人围成一圈,顺序排号。从第一个人开始报号(从1到3报数),凡报到3的的人退出圈子,问最后留下的是原来第几号的那位。思路解题关键:凡报到3的人就应该退出圈子,当有n-1个人退出圈子时剩下的那个人就是最后留下的人。解题思路:创建一个数组num[n],数组num[n]赋值从1开始到n。申请一个变量k当满足条件k=3时,第i个人退出圈子(退出圈子时num[i]-0)申请一个变量m代表..._编写程序,有n个人围成一圈,顺序编号,从第一个人开始按1、2、3顺序报数,凡报 到3的

Android加载H5页面——webView加载网页时图片不显示_android webview无法加载图片-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏8次。WebView加载网页,图片不显示直接上效果图:在Android studio中加载URL链接的时候,有些图片可以显示,有些显示不出来;考虑可以有以下原因:android webview 从Lollipop(5.0)开始webview默认不允许混合模式,https当中不能加载http资源,而开发的时候可能使用的是https的链接,但是链接中的图片可能是http的,所以需要设置开启。解..._android webview无法加载图片

几种基本汇编指令详解_movq-程序员宅基地

文章浏览阅读4.3w次,点赞29次,收藏138次。几种基本汇编指令详解常见寄存器 寄存器 16位 32位 64位 累加寄存器 AX EAX RAX 基址寄存器 BX EBX RBX 计数寄存器 CX ECX RCX 数据寄存器 DX EDX RDX 堆栈基指针 BP EBP RBP 变址寄存器 SI ESI RSI 堆栈顶指针 SP_movq

u8、u16、u32、s8、s16、s32、Size_t是什么类型?_u8就是char-程序员宅基地

文章浏览阅读10w+次,点赞51次,收藏330次。1.u8就是unsigned char ,是8位无符号char类型的值/*!&lt; Signed integer types */typedef signed char int8_t;typedef signed short int16_t;typedef signed long int32_t;/*!&lt; Unsigned integer..._u8就是char