[Java]使用正则表达式实现分词
手工分词稍嫌麻烦,不好维护,而利用正则表达式就利索多了。Java提供了java.util.regex.Matcher,java.util.regex.Pattern类来帮助我们实现此功能。
例一:以下程序将把"This is a farm that that raises dairy cattle."中的单词一个个找出来。
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)效果是一样的
}
}
}
输出如下:
This is a farm that raises dairy cattle
例二:以下程序将找出算术表达式中的数字和符号。由于算术表达式中的+-*/()在正则表达式里都有自己含义,如+表示一个或多个,因为需要直接表示符号本身时采用\\进行转义。
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));
}
输出:
1 + 2 + 34 * ( 5 + 78 ) / 2
例三:在例二的基础上,增加小数的识别。正则表达式\\d+(\\.*)\\d*代表整数或者小数,如0.2,5,34.09都能识别出来。
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));
}
输出:
1.1 + 0.2 + 34.09 * ( 5 + 78 ) / 0.0002
例四:找出SQL语句中关键字,字段和条件
[A-Z_a-z][A-Z_a-z0-9]*表示以大小写字母或下划线开头之后可以是数字,字母,下划线之一
(=)*表示可以出现0个或一个等号
(\\')*表示出现0个或一个单引号
(\\')*\\w*(\\')*表示引号中间可以为字符
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));
}
输出:
select field1 field2 field3 from table1 where field1='1' order by field2
--END--2019年9月3日09点50分
[Java]使用正则表达式实现分词的更多相关文章
- java中正则表达式基本用法
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...
- Atitit.java expression fsm 表达式分词fsm引擎
Atitit.java expression fsm 表达式分词fsm引擎 C:\0workspace\AtiPlatf_cms\src\com\attilax\fsm\JavaExpFsm.java ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java的正则表达式
package RegexTest; /** * Created by hu on 2016/3/29. */ /* * Java的正则表达式 在正则表达式中,用\d表示一位数字,如果在其它语言中使用 ...
- Java与正则表达式
Java与正则表达式 标签: Java基础 正则 正如正则的名字所显示的是描述了一个规则, 通过这个规则去匹配字符串. 学习正则就是学习正则表达式的语法规则 正则语法 普通字符 字母, 数字, 汉字, ...
- Java中正则表达式去除html标签
Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正 ...
- Java面向对象 正则表达式
Java面向对象 正则表达式 知识概要: (1)正则表达式的特点 (2)正则表达的匹配 (3)正则表达式的切割,替换,获取 (4)正则表达式的练习 正则表达式:符合 ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- JAVA中正则表达式常用的四个方法
JAVA中正则表达式处理字符串的四个常用方法:匹配.分割.替换.截取.其跟字符串的常用函数相似,但是使用正则表达式会更简单.更加简洁.下面是具体的例子: public class TestRegex ...
随机推荐
- Seeker:一款可获取高精度地理和设备信息的工具分析
Seeker是一款可以获取高精度地理和设备信息的工具.其利用HTML5,Javascript,JQuery和PHP来抓取设备信息,以及Geolocation接口实现对设备高精度地理位置的获取. See ...
- Delphi 控制程序的执行
- Delphi 变量的作用域
- Delphi Edit组件
- vue-cli 4 安装与 新建项目 路由
环境: windows: vue-cli: 编辑器: vsCode npm: #去nodejs网安装https://npm.taobao.org/mirrors/node/v12.12.0/node- ...
- MP4 ISO基础媒体文件格式术语
术语.定义和缩略术语 box 由唯一类型标识符和长度定义的面向对象的构造块(注:在一些标准称为“atom") chunk(块) 一个track连续采样集合 container box 唯一目 ...
- xml 字符串解析成通用的map
[quote]Stax解析技术:快速高效,根据流的形式解析xml,比dom解析技术更加快,dom解析技术是基于文档结构树的,会把整个dom文件树加载到内存进行解析[/quote] package co ...
- jmeter使用jdbc连接mysql数据库遇到的问题
问题一.已将myql的jar包放在jmeter5.1的lib目录下并重启过jmeter,连接数据库提示 Cannot create JDBC driver of class 'com.mysql.jd ...
- 标准C语言(12)
一个存储区的地址应该是它自身大小的整数倍(双精度浮点类型存储区的地址只需要是4的整数倍),这个规则叫数据对齐,结构体内部的存储区通常也需要遵守数据对齐的规则,数据对齐有可能导致结构体相邻子存储区之间有 ...
- xss技巧记录
1.iframe的srcdoc属性 先演示一下 <iframe srcdoc="<script>alert(1)</script>"> 浏览器渲 ...