java 中使用正则表达式操作字符串
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class TestMain
{
/**
* arivate1
* brivate1
* crivate1
* drivate
* erivate
* go go
* kitty kitty
*/
public static void main(String[] args) throws Exception
{
Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
String clipboardText = getClipboardText(systemClipboard);
Pattern rule = Pattern.compile("[1-9]+\\.[0-9]+");
Matcher matcher = rule.matcher(clipboardText);
// System.out.println(matcher.matches());
// System.out.println(matcher.groupCount());
ArrayList<String> strs = new ArrayList<String>();
Double total = 0.0;
while (matcher.find()) {
strs.add(matcher.group(0));
}
System.out.println("加班时数: ");
for (String s : strs){
Double i = Double.parseDouble(s);
System.out.print(i + ", ");
total +=i;
}
System.out.println();
System.out.println("加班总时数: " +total);
} public static void test(){
getStrings(); //用正则表达式获取指定字符串内容中的指定内容
System.out.println("********************");
replace(); //用正则表达式替换字符串内容
System.out.println("********************");
strSplit(); //使用正则表达式切割字符串
System.out.println("********************");
strMatch(); //字符串匹配
} /*
* Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,
* 本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造;
* 系统剪切板通过 Clipboard sysc =
* Toolkit.getDefaultToolkit().getSystemClipboard();
* 获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据 1. 从指定的剪切板中获取文本内容
*/
protected static String getClipboardText(Clipboard clip) throws Exception
{
// 获取剪切板中的内容
Transferable clipT = clip.getContents(null);
if (clipT != null)
{
// 检查内容是否是文本类型
if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor)) return (String) clipT.getTransferData(DataFlavor.stringFlavor);
}
return null;
} // 2. 往剪切板写文本数据
protected static void setClipboardText(Clipboard clip, String writeMe)
{
Transferable tText = new StringSelection(writeMe);
clip.setContents(tText, null);
}
/**
* 字符串匹配
*/
private static void strMatch() {
String phone = "13539770000";
//检查phone是否是合格的手机号(标准:1开头,第二位为3,5,8,后9位为任意数字)
System.out.println(phone + ":" + phone.matches("1[358][0-9]{9,9}")); //true String str = "abcd12345efghijklmn";
//检查str中间是否包含12345
System.out.println(str + ":" + str.matches("\\w+12345\\w+")); //true
System.out.println(str + ":" + str.matches("\\w+123456\\w+")); //false
} /**
* 使用正则表达式切割字符串
*/
private static void strSplit() {
String str = "asfasf.sdfsaf.sdfsdfas.asdfasfdasfd.wrqwrwqer.asfsafasf.safgfdgdsg";
String[] strs = str.split("\\.");
for (String s : strs){
System.out.println(s);
}
} /**
* 用正则表达式获取指定字符串内容中的指定内容
*/
private static void getStrings() {
String str = "rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf";
Pattern p = Pattern.compile("qq(.*?)qq");
Matcher m = p.matcher(str);
ArrayList<String> strs = new ArrayList<String>();
while (m.find()) {
strs.add(m.group(1));
}
for (String s : strs){
System.out.println(s);
}
} /**
* 用正则表达式替换字符串内容
*/
private static void replace() {
String str = "asfas5fsaf5s4fs6af.sdaf.asf.wqre.qwr.fdsf.asf.asf.asf";
//将字符串中的.替换成_,因为.是特殊字符,所以要用\.表达,又因为\是特殊字符,所以要用\\.来表达.
str = str.replaceAll("\\.", "_");
System.out.println(str);
} }
java 中使用正则表达式操作字符串的更多相关文章
- java中使用正则表达式匹配字符串
在Java中使用正则表达式去匹配相应的字符串: String importFileRole = "(import)\\s*[a-zA-Z0-9_<>.]+\\;";// ...
- 9.JAVA中的正则表达式
一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ? #{0,1}-?有一个-或者没有 \\ #表示一个" ...
- JAVA中的时间操作
java中的时间操作不外乎这四种情况: 1.获取当前时间 2.获取某个时间的某种格式 3.设置时间 4.时间的运算 好,下面就针对这四种情况,一个一个搞定. 一.获取当前时间 有两种方式可以获得,第一 ...
- JAVA中的正则表达式--待续
1.关于“\”,在JAVA中的正则表达式中的不同: 在其他语言中"\\"表示为:我想要在正则表达式中插入一个普通的反斜杠: 在Java中“\\”表示为:我想要插入一个正则表达式反斜 ...
- (转)Java中使用正则表达式的一个简单例子及常用正则分享
转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...
- java中的集合操作类(未完待续)
申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...
- Java中各种集合(字符串类)的线程安全性!!!
Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...
- 【java 正则表达式】记录所有在java中使用正则表达式的情况
本篇记录在java中邂逅正则表达式的所有美丽瞬间.因为在java和js中正则表达式的语法并不一致. 1.匹配字符串中有出现[2.1开头或者&2.1或者&3.1等的] Pattern m ...
- 译:Java 中的正则表达式性能概述
原文链接:https://www.baeldung.com/java-regex-performance 作者: baeldung 译者:Darren Luo 1. 概述 在本快速教程中,我们将展示模 ...
随机推荐
- Lua中string.format占位符的使用
虽然lua中字符串拼接"string.format"相对于".."消耗较大,但有时为了代码的可读性,项目中还是经常用到"string.format&q ...
- Python面试笔记一
目录 一.MySQL(30题) 二.django(15题) 三.Python部分(46题) 四.RESTful API设计指南(7题) 五.补充 一.MySQL(30题) 1.mysql如何做分页 m ...
- mybatis使用oracle的nulls first/nulls last
nulls first/nulls last 顾名思义,就是在检索结果集里,有null值的时候,把null值认为是最大值,还是最小值. nulls first 放置在结果集最前面 nulls last ...
- 初学Django项目可能会遇到的问题
1. 出现莫名其妙的 app01 我项目中的app名字并不是app01,可是运行python manage.py makemigrations的时候总是提示app01不是已安装的app Applyin ...
- kubernetes-整体概述和架构
1.Kubernetes是什么 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务.通过Kubernetes能够进行应用的自动化部署和扩缩容.在Kubernetes中,会将组 ...
- jenkins乱码解决问题
1.jenkins控制台线上乱码解决 系统管理——系统设置,添加编码环境变量 zh.CH.UTF-8 2.java启动后,tomcat日志显示乱码,原因是环境变量没有带过去,因此shell脚本头部需要 ...
- js 批量替换
html = html.replace(new RegExp(title,"gm"), "<span style='color:red;'>"+ti ...
- 详解Linux双网卡绑定之bond0
1.什么是bond? 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术.Kernels 2.4.12及以后的版本均供bonding模块 ...
- vue 2.0 + ElementUI构建树形表格
解决: 本来想在网上博客找一找解决方法,奈何百度到的结果都不尽人意,思维逻辑不清,步骤复杂,代码混乱,找了半天也没找到一个满意的,所以干脆就自己动手写一个 思路: table需要的数据是array,所 ...
- Python Revisited Day 05(模块)
目录 5.1 模块与包 5.1.1 包 5.2 Python 标准库概览 5.2.1 字符串处理 io.StringIO 类 5.2.3 命令行设计 5.2.4 数学与数字 5.2.5 时间与日期 5 ...