java正则表达式 分词_[Java]使用正则表达式实现分词

手工分词稍嫌麻烦,不好维护,而利用正则表达式就利索多了。Java提供了java.util.regex.Matcher,java.util.regex.Pattern类来帮助我们实现此功能。

例一:以下程序将把"This is a farm that that raises dairy cattle."中的单词一个个找出来。

48304ba5e6f9fe08f3fa1abda7d326ab.png

package com.hy;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RexTest {

public static void main(String[] args){

String input = "This is a farm that raises dairy cattle.";

String regExp = "(\\w+)";

Pattern pattern=Pattern.compile(regExp);

Matcher matcher=pattern.matcher(input);

while(matcher.find()){

System.out.println(matcher.group(0));// 在这里使用matcher.group(0)和matcher.group(1)效果是一样的

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

This

is

a

farm

that

raises

dairy

cattle

48304ba5e6f9fe08f3fa1abda7d326ab.png

例二:以下程序将找出算术表达式中的数字和符号。由于算术表达式中的+-*/()在正则表达式里都有自己含义,如+表示一个或多个,因为需要直接表示符号本身时采用\\进行转义。

48304ba5e6f9fe08f3fa1abda7d326ab.png

String input = "1+2+34*(5+78)/2";

String regExp = "(\\d+)|(\\+)|(\\-)|(\\*)|(\\/)|(\\()|(\\))";

Pattern pattern=Pattern.compile(regExp);

Matcher matcher=pattern.matcher(input);

while(matcher.find()){

System.out.println(matcher.group(0));

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1

+

2

+

34

*

(

5

+

78

)

/

2

48304ba5e6f9fe08f3fa1abda7d326ab.png

例三:在例二的基础上,增加小数的识别。正则表达式\\d+(\\.*)\\d*代表整数或者小数,如0.2,5,34.09都能识别出来。

48304ba5e6f9fe08f3fa1abda7d326ab.png

String input = "1.1+0.2+34.09*(5+78)/0.0002";

String regExp = "(\\d+(\\.*)\\d*)|(\\+)|(\\-)|(\\*)|(\\/)|(\\()|(\\))";

Pattern pattern=Pattern.compile(regExp);

Matcher matcher=pattern.matcher(input);

while(matcher.find()){

System.out.println(matcher.group(0));

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1.1

+

0.2

+

34.09

*

(

5

+

78

)

/

0.0002

48304ba5e6f9fe08f3fa1abda7d326ab.png

例四:找出SQL语句中关键字,字段和条件

[A-Z_a-z][A-Z_a-z0-9]*表示以大小写字母或下划线开头之后可以是数字,字母,下划线之一

(=)*表示可以出现0个或一个等号

(\\')*表示出现0个或一个单引号

(\\')*\\w*(\\')*表示引号中间可以为字符

48304ba5e6f9fe08f3fa1abda7d326ab.png

String input = "select field1,field2,field3 from table1 where field1='1' order by field2 ";

String regExp = "([A-Z_a-z][A-Z_a-z0-9]*(=)*(\\')*\\w*(\\')*)";

Pattern pattern=Pattern.compile(regExp);

Matcher matcher=pattern.matcher(input);

while(matcher.find()){

System.out.println(matcher.group(0));

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

输出:

48304ba5e6f9fe08f3fa1abda7d326ab.png

select

field1

field2

field3

from

table1

where

field1='1'

order

by

field2

48304ba5e6f9fe08f3fa1abda7d326ab.png

--END--2019年9月3日09点50分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

as和java什么关系_深入理解happens-before和as-if-serial语义

概述本文大部分整理自《Java并发编程的艺术》,温故而知新,加深对基础的理解程度。指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能&a…

java atomiclong 使用_Java并发AtomicLongArray类

全屏java.util.concurrent.atomic.AtomicLongArray类提供了可以原子读取和写入的底层long类型数组的操作,并且还包含高级原子操作。 AtomicLongArray支持对基础long类型数组变量的原子操作。 它具有获取和设置方法,如在变量上的读取和写入。 也就是说&am…

我的世界java版刷雪球机,我的世界手机版怎么刷雪球 无限刷雪球机

随着全球变暖,厄尔尼诺现象加剧,一些生活在亚热带的孩子越来越感受不到下雪的喜悦,雪场的票子也是难求!不过不要着急,Minecraft给你模拟了一个生存的环境,在这里,你可以和好友联机打雪仗&#x…

php如何随机显示图片,php中随机显示图片的函数代码_php

/*********************************************** Filename : img.php* Author : freemousehttp://www.gaodaima.com/?p49284php中随机显示图片的函数代码_php* web : www.cnphp.info* email :freemouse1981gmail.com* Date : 2010/12/27* Usage:* * **********************…

oracle 8i漏洞渗透,一次通过Oracle8i入侵系统之旅(组图)

最近看了些有关Oracle的安全资料,看后随手做了一个渗透测试,把过程记录下来方便日后查阅.先用SuperScan4.0扫描下要测试的主机,速度很快,结果如图1所示:图 1端口 1521 是 Oracle 的 TNS Listener 默认监听的端口,通过扫描报告还可以看到Oracle的版本为8i.现在还不知道对方的操作…

linux系统安装serv u,建立第一个可用的FTP服务器

二、建立第一个可用的FTP服务器1、比如本机IP地址为“192.168.0.48”,已建立好域名“ftp.bbc.com”的相关DNS记录。2、打开Serv-U管理器。选上图的“Serv-U Administrator”,即出现“Setup Wizard”(设置向导)。此向导可以帮你轻松地完成基本设置&#x…

Linux配置scheme环境,用 Xcode Configuration 和 Scheme 配置项目环境

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?想象一个场景,我们正在开发一款支付系统,这个支付系统同时支持有Web版和原生的iOS APP版本。这个支付系统有三个环境:dev: 调用…

linux进入字符界面编程,MPlayer字符界面操作方法

一、启动播放时参数:在终端下敲入:./mplayer 提示各种使用帮助信息-vo 选择视频输出模式和设备(用-vo help查看列表)-ao 选择音频输出模式和设备(用-ao help查看列表)-ss 寻找指定的(多少秒或hh:mm:ss)位置-nosound 不播放声音-fs -vm -zoom …

linux怎么删web应用程序错误,Ubuntu 20.04将删除Amazon Web应用程序,但用户可另行安装...

Ubuntu 20.04将删除Amazon Web应用程序,原因就是这款应用很少有用户使用,但需要的用户也可另行安装。在过去的8年中,Amazon Web应用程序已成为Ubuntu桌面的一部分,现在,Ubuntu 20.04已决定退出。亚马逊网络启动器是在U…

linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]

转自:http://www.vuln.cn/2000sqlmap的功能与强大性不必多言,方便大家下载,给大家整理了下sqlmap最新版的官网与github下载地址。官网下载地址github下载环境与安装windows系统环境安装windows下安装sqlmap需要python环境支持安装好后&#x…

linux gcc本地链接lib文件(c静态,动态),GCC中静态连接和动态连接的区别(LINUX下)...

最近正在学习库的用法,写了最基础的libmystring.a的库(里面只有一个add函数),然后编写test程序测试add函数,用ar命令创建好libmystring.a库后,用以下命令编译静态连接的a.outgcc –static test.c –L ./ –lmystring –o a.out得到…

c语言 样例测试覆盖,白盒测试实例之十一——逻辑覆盖测试

逻辑覆盖测试是通过对程序逻辑结构的遍历实现程序的覆盖。从覆盖源代码的不同程度可以分为以下六个标准:语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、判定-条件覆盖(又称为分支-条件覆盖)、条件组合覆盖和路径覆盖。先看一下具体例子的源代码(C语言)&#xff1a…

ev3的c语言编程软件,乐高EV3编程软件教育版下载

乐高EV3编程软件教育版官方版是一款用于机器人编程的应用工具,乐高EV3编程软件教育版最新版可以通过可视化图标形式编程,用以控制机器人的各种动作指令,乐高EV3编程软件教育版操作起来比较简单,发挥你的想象,创造无限的…

android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线

与搭载Android 2.3系统的OPPO R807不同,OPPO R817搭载了Android 4.0系统。不过这款手机仍旧舍弃了Android系统的原生界面,因此两款手机在界面上的变化其实并不非常大。升级Android 4.0后界面变化不大内置多款主题与解锁样式可更改字体及SIM卡信息OPPO R8…

android清除图案锁 位置,安卓手机清除锁屏密码、锁屏图案的教程

来源:安卓网2014-01-21/12:15本文分享一个安卓手机清除锁屏密码以及锁屏图案的几种方法和详细教程。如果锁屏密码、或者图形锁屏密码忘记了怎么办,怎么清除呢?下面小编整理了3种安卓手机清除锁屏图案密码的方法。↓↓↓准备工作:1.确保已经安…

html5程序自动登录,Jtro的技术分享:网页调起unity的exe程序并自动登录

思路是这样:通过一个额外的exe文件来实现登录,并保存一个token文件,然后在unity的项目提交数据的时候读取这个token向服务器发送数据。下面是具体的方法:s这个需要用到WPF来编写,首先打开VS2017,选择创建WP…

html 图片防盗链,【反防盗链】介绍一个对付图片防盗链的方法

悲催的声明:由于腾讯也采用了防盗链技术,本文方法已经失效了!当我们想在文章里引用某张图片时,如果对方设置了防盗链,我们看到的将是404或forbidden或其他图片,而不是想要的那张图片,为此&#…

html字体阴影怎么设置6,css怎么设置字体阴影

css设置字体阴影的方法:使用代码【text-shadow:3px 3px 3px #00f;】,【text-shadow】属性应用于阴影文本,语法为【text-shadow: h-shadow v-shadow blur color;】。本教程操作环境:windows10系统、css3版,该方法适用于…

PCL入门

pcl的入门 本博客主要是对外文的翻译,及其他资料的一些整理。 pcl 分割成好几个模块的库 Filters(滤波器) Features(特征) Keypoints(关键点) Registration(注册) KdTree:k-dimension tree(k维的树) OcTree(八叉树) Segmetation(分割) Sample Consensus(采…

pcl里面的3D特征

我这里不介绍pcl里面的类的命名规范,及点的类型。为什么呢?pcl里面类的命名规范,比较繁琐,而且主要是针对要对pcl这个库要开源的人士,而pcl里面的点的类型太多,足够满足你的要求。所以我们要走一条具有中国特色的pcl主…