精华内容
下载资源
问答
  • 主要介绍了Java使用正则表达式截取重复出现的XML字符串功能,涉及java针对xml字符串及指定格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下
  • 正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐。于是想到用正则表达式来完成,对java正则表达式提取字符的方式实例感兴趣的朋友一起学习吧
  • 今天小编就为大家分享一篇java 正则表达式获取两个字符中间的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • * 根据正则表达式截取字符串 * @param str 字符串 * @param p 正则表达式 * @return */ private static String getStr(String str, String p) { Pattern pattern = Pattern.compile(p); Matcher matcher = ...
    /**
     * 根据正则表达式截取字符串
     * @param str 字符串
     * @param p 正则表达式
     * @return
     */
    private static String getStr(String str, String p) {
    	Pattern pattern = Pattern.compile(p);
    	Matcher matcher = pattern.matcher(str);
    	if (matcher.find()) {
    		System.out.println(matcher.group(0));
    		return matcher.group(0);
    	}
    	return null;
    }
    
    展开全文
  • Java中用正则表达式截取字符串

    万次阅读 多人点赞 2017-12-17 12:11:26
    正则表达式在匹配字符串的过程中应用广泛,如果能够熟练掌握正则表达式,在学习工作中解决字符串相关问题可以事半功倍。 java.util.regex 包下的Pattern和Matcher类提供了Java中正则表达式的解决方案。 指定为字符串...

           正则表达式在匹配字符串的过程中应用广泛,如果能够熟练掌握正则表达式,在学习工作中解决字符串相关问题可以事半功倍。

           java.util.regex 包下的Pattern和Matcher类提供了Java中正则表达式的解决方案。

           指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

    因此,典型的调用顺序是

    Pattern p = Pattern.compile("a*b");  //编译"a*b"为Pattern类的实例
    Matcher m = p.matcher("aaaaab");     //该实例与"aaaaab"匹配
    boolean b = m.matches();            //对是否匹配返回一个布尔值 
    --【出自JDK1.6文档】

            场景分析:有一个字符串>>>"rows=[Rowcolumns=[1, c], Rowcolumns=[2, java], Rowcolumns=[3, ruby], Rowcolumns=[4, go], Rowcolumns=[5, python], Rowcolumns=[6, lua], Rowcolumns=[7, csharp], Rowcolumns=[8, ajax], Rowcolumns=[9, jsp]]";"

            现在要截取[ ]中的数据,即1,c/2,java/3,ruby...

            那么根据上述的套路,首先我们要写出一个正则并将其编译为Pattern类的实例,因为上述字符串中[ ]有两种形态,一种是"rows=[",另一种是"Rowcolumes=[",我们只想匹配后面的这种子串,所以

            1.直接选取“ns=[”作为开头,先写出这个子串的表达式“ns”是具体的字母,不用改变,"="和"["都是特殊字符,需要进行转义,因此“ns=[”的正则表达式为"ns\\=\\[",同理结尾匹配"\\]"

            2.这样已经匹配了开头,但我们想截取的字符串并不想带上开头和结尾,因此需要运用零宽断言,举例来说(?=exp)代表匹配以exp结尾的字符串,但匹配出来的结果并不带exp,例如(?=ing)匹配reading,结果为read;(?<=exp)匹配以exp开头的字符串,但结果不带exp,例如(?<=read)匹配reading,结果为ing。这样一来我们的问题都解决了,运用零宽断言,开头匹配"(?<=ns\\=\\[)",结尾匹配"(?=\\])"

            3.开头和结尾都搞定了,还差中间,我们队中间的数据没有要求,因此直接匹配".*"(任意字符匹配0次或多次),但是这里有一个问题是,这个表达式是贪心的,因此它会匹配完整个字符串,即"(?<=ns\\=\\[).*(?=\\])"匹配的结果是"2, java], Rowcolumns=[3, ruby], Rowcolumns=[4, go], Rowcolumns=[5, python], Rowcolumns=[6, lua], Rowcolumns=[7, csharp], Rowcolumns=[8, ajax], Rowcolumns=[9, jsp",显然不是我们想要的,因此再添加一个"?"(前面的内容匹配0次或1次)

            4.最后需要截取的子串的正则表达式就是"(?<=ns\\=\\[).*?(?=\\])"

            5.在Java中使用处理字符串

    Pattern pattern = Pattern.compile("(?<=ns\\=\\[).*?(?=\\])");
    Matcher matcher = pattern2.matcher(string);
        while(matcher.find()){
    	System.out.println(matcher.group());
    	}

            其中有一个String group()方法,它返回匹配到的字符串,在上述例子中的正则表达式只有一个group,所以直接调用group()方法就行。如果一个正则表达式形如"((//d+,)(//d+))"那么他就有三个group,分别匹配从左到右的第n个左括号里的正则表达式。group()与group(0)等价,匹配整个正则表达式;gruop(1)匹配"(//d+,)(//d+)";group(2)匹配"//d+,";group(3)匹配"//d+,"。编译执行以上代码就可以得到我们想要的结果。


    参考:

    正则基本用法1

    正则基本用法2

    group()的用法

    JDK Matcher文档


    展开全文
  • Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为() A ".*?(?=\\()" B ".*?(?=\()" C ".*(?=...

     

    Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()
    • A   ".*?(?=\\()"
    • B   ".*?(?=\()"
    • C  ".*(?=\\()"
    • D  ".*(?=\()"

    http://www.cnblogs.com/xudong-bupt/p/3586889.html
    1.什么是正则表达式的贪婪与非贪婪匹配

    如:String str="abcaxc";

    Patter p="ab*c";

    贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

    非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到: abc(ab*c)。

    2.编程中如何区分两种模式

    默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

    量词:{m,n}:m到n个

    *:任意多个

    +:一个到多个

    ?:0或一个
    以上来自博主的博客,然后这道题目
    .表示除\n之外的任意字符
    *表示匹配0-无穷
    +表示匹配1-无穷
    (?=Expression) 顺序环视,(?=\\()就是匹配正括号
    懒惰模式正则:
    src=".*? (?=\\()) "
    结果:北京市
    因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。
     
     


    A ".*?(?=\\()"
    B ".*?(?=\()"
    C ".*(?=\\()"
    D ".*(?=\()"

    前面的.*?是非贪婪匹配的意思, 表示找到最小的就可以了
    (?=Expression) 顺序环视,(?=\\()就是匹配正括号

    String text = "北京市(海淀区)(朝阳区)(西城区)";
    Pattern pattern = Pattern.compile(".*?(?=\\()" );
    Matcher matcher = pattern.matcher(text);
    if (matcher.find()) {
    System.out.println(matcher.group(0));
    }
     
    解析

    选A, 知识点是正则表达式中的贪婪匹配。
    1、正则表达式中元字符:
    ".":匹配除去\n换行符的任意字符
    "*":匹配前面子表达式任意次
    "?":匹配前面子表达式的0次或1次,如果前面也是元字符,那么它就是非贪婪匹配了(默认是贪婪匹配的)。
    2、B中 ".*?(?=\\()"中后面的(?=\\()它是(?=assert)的形式,叫做顺序环视,也就是前面.*?匹配到的字符后面必须要紧接着有assrt中声明的值,也就是左括号(其中\\都是转义字符),但是匹配的到的串是不包含assrt中声明的内容的。
    3、题中,原串 “北京市(海淀区)(朝阳区)(西城区)”,首先匹配到北京市(前部分),然后北京市后面有左括号( ,这是后面顺序环视部分,但是不包括左括号,这样整个串就匹配完了,截取到的串为“北京市”。
     

    转载于:https://www.cnblogs.com/zhuyeshen/p/11038943.html

    展开全文
  • 正则表达式截取字符串

    千次阅读 2019-09-17 14:18:05
    其实就是截取字符串括号内的或者截取括号外的内容。 Java中截取括号内的: Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))"); Matcher matcher = pattern.matcher(school); whi...

    例如:String school = “高二(1班)”
    我想只获取年级或者只获取班级,该怎么截取?
    其实就是截取字符串括号内的或者截取括号外的内容。

    Java中截取括号内的

    Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");
    Matcher matcher = pattern.matcher(school);
    while(matcher.find()){
        return matcher.group();
    }

    return: 1班

    Java中截取括号外的

    return school.replaceAll("\\((.*?)\\)", "");

     return : 高二

    JS中截取括号内的

    let result = '';
    let regex = /\((.+?)\)/g;
    let options = school.match(regex)
    if (options !== null) {
      let option = options[0];
      if (option !== null) {
         result = option.substring(1, option.length - 1)
      }
    }
    return result;

     return : 1班

    JS中截取括号外的

    return school.replace(/\((.*?)\)/g,'');

     return : 高二

    展开全文
  • java 正则匹配空格字符串 正则表达式截取字符串 需求:从一堆sql中取出某些特定字符串: 比如配置的sql语句为:"company_code = @cc and project_id = @pid ; update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update ...
  • Java 使用正则表达式截取字符串

    千次阅读 2019-03-07 21:37:20
    项目里面一个小需求能够把用户输入的字符串进行切割: public static void main(String[] args) { String content = "第一条 为了保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人...
  • 今天小编就为大家分享一篇Java正则表达式,提取双引号中间的部分方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Pattern pattern = Pattern.compile("@.*\\(.*... //匹配@xxx(xxx)形态的字符串 String[] result=pattern.split(srcContent); Pattern pattern = Pattern.compile("@.*\\(.*\\)"); //匹配@xxx(xxx)形态的字符串 ...
  • 主要介绍了java使用正则表达式判断邮箱格式是否正确的方法,涉及java正则表达式字符串的相关操作技巧,需要的朋友可以参考下
  • 废话不多说,直接上代码: ...import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.regex.*; public class ssss { public static void main(S...
  • Java利用正则表达式截取指定字符串之间的内容: package com.accord.util; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * ...
  • java正则表达式字符串截取数字

    千次阅读 2019-04-26 10:28:35
    获取字符串中的价格,因为价格不稳定无法通过subString来截取,只能匹配其中的数字。 代码: String code = "100元/年"; //匹配非数字字符,然后全部替换为空字符,剩下的自然只有数字啦 String s = Pattern....
  • 最近写脚本,需要对脚本中函数传递的路径参数进行截取,发现了以下比较好用的方法,记录下: file=/dir1/dir2/dir3/my.file.txt 我们可以用${ }分别替换获得不同的值: ${file#*/}:拿掉第一条/及其左边的字串:...
  • 最近开发遇到一个新的东西,就是前端传过来一个字符串,需要将里面的数字提取出来,倒腾了一天,最后还是没有倒腾出来,最后还是借鉴大佬的方法。记录一下。 首先是前端传来的字符串“小明通过扫码向你付款100000....
  • JAVA 正则表达式截取字符串小例子

    千次阅读 2015-05-16 10:50:16
    例如:从如下字符串  营业时间: 11:30-21:30 修改 分类标签: 无线上网(8) 可以刷卡(7) 朋友聚餐(5) 家庭聚会(5) 商务宴请(4) 情侣约会(4) 可自带酒水(2) 中获取: 11:30-21:30 两个数字:两数字-两个数字:两...
  • 主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下
  • 需求:想截取某个字符串中&lt;content&gt;*****&lt;/content&gt;的值,可能有0个或多个****; 代码: package com.accord.test; import java.util.ArrayList; import java.util.List; import ...
  • Java正则表达式截取字符串

    千次阅读 2016-12-24 17:16:23
    这篇文章主要围绕截取字符串做个简单的介绍; 假设有个需求:在一长段乱七八糟的字符串中截取需要的信息。 这里有一个乱七八糟的字符串:fjsdh(12345678)&dasdas 需要截取的信息:12345678 如果用常规的Java代码...
  • 当对一段无规则的长本文进行指定内容的获取或提取时,运用正则表达式可以有效的提升我们的代码质量...1.截取指定字符串之间的字符串(不含开头与结尾字符串) 在一段文本中,我们指定了固定格式的文本。比如: ...
  • 我有个字符串比如a="abcdanmcadedcdeefako"那么我怎么能得到一个数组,其中数组的各项是字母a和c的中间字符,即第一项是"b"第二项"nm"第三项"ded" 二、答案 下面是C#写的,java也可以适用 static void Main(string...
  • java 正则表达式提取字符串

    万次阅读 2019-03-23 14:30:07
    如果需要提取的字符串没有好的规则,则直接用点.;其他部分剩下的就是自己需要提取的 Pattern p=Pattern.compile("(INSERT INTO PUBLIC\\.WS_TRIGGER_SWITCH VALUES \\(')(.+)(', '.+','1'\\);)"); Matcher m=p.match...
  • 使用正则表达式匹配两个字符中间的文本,这里采用“《”“》”进行举例: String skh ="(?<=\\《)[^\\》]+";//用于匹配《》里面的文字 String str="是的没错《要匹配这里》是你要找的吗"; Pattern pattern=...
  • 需求://从字符串中提取指定的字符串,提取字符串的手机号; String s="ssfsfhshfsfjjs13293016789yfdiyifdsafyasif"; 示例代码: package com.正则表达式; import java.util.regex.Matcher; import java...
  • 原始数据 String result = "毛重:9890kg|净重:9810kg|钢卷号:...根据 | 分割字符串 String [] temp = result .split("\\|"); List<String> list = new ArrayList<String>(); for(int i=0;i<...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,000
精华内容 6,000
关键字:

java通过正则表达式截取字符串

java 订阅