Java按正则提取字符串

  在Java开发中,有时会遇到一些比较别扭的规则从字符串中提取子字符串,规则无疑是写正则表达式来表达了,那按照正则来提取子字符串就会用到java.util.regex包。

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 它包括两个类:Pattern和Matcher 。

Pattern: 一个Pattern是一个正则表达式经编译后的表现模式。

Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。

首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。

 1 package com.founder.mrp.util;
 2
 3 import java.util.regex.Matcher;
 4 import java.util.regex.Pattern;
 5 /**
 6  * 与String相关的工具方法集
 7  * @author Jimmy
 8  *
 9  */
10 public class StringUtil {
11
12     public static String getMatcher(String regex, String source) {
13         String result = "";
14         Pattern pattern = Pattern.compile(regex);
15         Matcher matcher = pattern.matcher(source);
16         while (matcher.find()) {
17             result = matcher.group(1);
18         }
19         return result;
20     }
21
22     public static void main(String[] args) {
23         String url = "http://172.12.1.123/test.txt";
24         String regex = "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})";
25 //        String regex = "(\\d{1,3}\\.){1,3}(\\d{1,3})";
26         System.out.println(getMatcher(regex,url));
27     }
28
29 }

参考资料:

Pattern、Matcher: http://www.cnblogs.com/playing/archive/2011/03/15/1984943.html

正则:http://deerchao.net/tutorials/regex/common.htm

时间: 2024-11-12 23:51:16

Java按正则提取字符串的相关文章

java:使用正则提取字符串中的数字(例如提取短信中的验证码)

使用java正则可以很方便的从字符串中提取符合条件的内容. 1.提取字符串中所有的手机号: private void getPhoneNum(String smsBody) { Pattern pattern = Pattern.compile("(13|14|15|18)\\d{9}"); Matcher matcher = pattern.matcher(smsBody); while (matcher.find()) { System.out.println(matcher.gr

java 正则提取字符串中的电话号码

public static void test2() { String str = "张三:13539558064,李四:15626829748,赵六:13718952204"; Pattern p = Pattern.compile("1[345678]\\d{9}"); Matcher m = p.matcher(str); while(m.find()) { System.out.println(m.group()); } } 原文地址:https://www

使用正则提取字符串中URL等信息

一.说明 背景:最近在做同步京东商品信息时遇到一个问题,同步后的商品详情无法在富文本中修改,强制修改会导致图片无法正常显示,研究发现详情中的图片是在css的作为背景图指定的. 解决:经过多次尝试,最后使用自定义HTML标签模板,提取css样式中background-image:url的图片地址和尺寸,并替换到自定义的模板中 技术:Java语言.正则表达式 二.代码 public static void main(String[] args) { StringBuilder stringBuild

正则提取字符串中的字符串

String regEx = "(?<=\\[)[\\S\\s]+(?=\\])"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(line); boolean result = m.find(); System.out.println(m.group()); public class RegexTest { /** * @param args */ public static void main(String

C# 正则提取字符串(提取一个或多个)

实例一:string result = ""; string str = "大家好! <User EntryTime='2010-10-7' Email='[email protected]'>张三</User> 自我介绍."; Regex regex = new Regex(@"<User\s*EntryTime='(?<time>[\s\S]*?)'\s+Email='(?<email>[\s\S]

Java提取字符串中的手机号

java通过正则表达式提取字符串中的手机号,简单快速方便,能提取多个手机号 public String getTelnum(String sParam){ if(sParam.length()<=0) return ""; Pattern pattern = Pattern.compile("(1|861)(3|5|8)\\d{9}$*"); Matcher matcher = pattern.matcher(sParam); StringBuffer bf

使用Java正则表达式提取字符串末尾的数字一例

直接上代码: String reg = "\\D+(\\d+)$"; //提取字符串末尾的数字:封妖塔守卫71 == >> 71 String s = monster.getMonsterName(); Pattern p2 = Pattern.compile(reg); Matcher m2 = p2.matcher(s); int historyHighestLevel = 1; if(m2.find()){ historyHighestLevel = Integer.

JAVA中用于处理字符串的“三兄弟”

JAVA中用于处理字符串常用的有三个类:java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder,这三者的共同之处都是final类,不允许被继承,这主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着的,且考虑到防止其中的参数被修改影响到其它的应用.StringBuffer与StringBuilder两个基本上差不多,只是StringBuffer是线程安全,可以不需要额外的同步用于多线程中:StringBuilder是非

Java中常用的字符串API

Java中常用的字符串API 这些API都封装在了 import java.lang; (默认导入无需手工导入) 字符串.length() 返回字符串的长度 字符串1.equals(字符串2) 判断两个字符串内容是否一致(不能用==) 字符串1.equalsIgnoreCase(字符串2) 判断两个字符串内容是否一致(不区分大小写) 字符串.toLowerCase() 返回小写字符串 字符串.toUpperCase() 返回大写字符串 字符串1.concat(字符串2) 返回字符串1接上字符串2