[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 ...
随机推荐
- vue组件之事件
自定义事件 通过prop属性,父组件可以向子组件传递数据,而子组件的自定义事件就是用来将内部的数据报告给父组件的. <div id="app3"> <my-com ...
- IIS7发布asp.net mvc提示404
之前服务器用的都是2003Server的服务器,发布mvc项目都没问题,今天换了一台机器,系统为Windows Server2008 R2 64位的发布mvc项目后就提示: 百度看到好多人说在web ...
- LeetCode OJ -- 无重复字符的最长子串
给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. 给定 ...
- mxnet 豆瓣镜像源安装
mxnet安装比较简单,这里直接通过豆瓣镜像源用pip安装 pip install -i https://pypi.doubanio.com/simple/ mxnet-cu100 # 进入ipyth ...
- 第二章 Vue快速入门-- 24 过滤器-Vue中全局过滤器的基本使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- file命令和readlink命令
6. 如何软链接设备文件 设备文件比较特殊,如果要创建设备文件的链接,需要用到mknod命令: 1 2 3 4 5 [root@centos7 etc]# ll /dev/sda brw-rw---- ...
- [洛谷P4072] SDOI2016 征途
问题描述 Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜.所以,一段路 ...
- python生成二维码图片
依赖Pillow库. import qrcode # 简单用法 img = qrcode.make('Hello World!') img.save('qr_code.png') # 高级用法 qr ...
- OpenCascade建模:构建圆环API--BRepPrimAPI_MakeTortus()
构建圆环API--BRepPrimAPI_MakeTortus() 函数语法: BRepPrimAPI_MakeTortus( const Standard_Real R1, const Standa ...
- UVA 12063 Zeros and ones 一道需要好好体会的好题
#include<bits/stdc++.h> #include<stdio.h> #include<iostream> #include<cmath> ...