精华内容
下载资源
问答
  • java正则匹配字符串中小括号内容 正则表达式 预搜索(零宽断言) String content = "COPY FROM(IN1) TO(TEMP0) USING(CTL1) \n COPY FROM(TEMP0,IN2) TO(TEMP1) USING(CTL2)\n SPLICE FROM(TEMP1) TO(COMB1) ON(71...

    java正则匹配字符串中小括号内容

    正则表达式 预搜索(零宽断言)

    String content = "COPY FROM(IN1) TO(TEMP0) USING(CTL1) \n COPY FROM(TEMP0,IN2) TO(TEMP1) USING(CTL2)\n SPLICE FROM(TEMP1) TO(COMB1) ON(71,23,CH) WITHALL WITH(1,70) WITH(99,510) \n";
    
    Pattern pattern = Pattern.compile("(?<=\\()[^)]+");  
    Matcher matcher = pattern.matcher(content);
    while(matcher.find()){
       System.out.println(matcher.group());
    }
    

    输出

    IN1
    TEMP0
    CTL1
    TEMP0,IN2
    TEMP1
    CTL2
    TEMP1
    COMB1
    71,23,CH
    1,70
    99,510
    

    如果指向匹配FROM后面括号内的内容,可以将正则修改一下

    String content = "COPY FROM(IN1) TO(TEMP0) USING(CTL1) \n COPY FROM(TEMP0,IN2) TO(TEMP1) USING(CTL2)\n SPLICE FROM(TEMP1) TO(COMB1) ON(71,23,CH) WITHALL WITH(1,70) WITH(99,510) \n";
    
    Pattern pattern = Pattern.compile("(?<=\\FROM()[^)]+");  
    Matcher matcher = pattern.matcher(content);
    while(matcher.find()){
       System.out.println(matcher.group());
    }
    

    输出如下:

    IN1
    TEMP0,IN2
    TEMP1
    
    展开全文
  • 今天同事问了我一个关于正则表达式 的问题,他提出的问题是:想匹配不包括“TWN”,"HKG","MAC"的字符串。 最后写出的表达式为:^(?...上面表达式意思是匹配字符串中不包含HKG、MAC、TWN字符串

    今天同事问了我一个关于正则表达式 的问题,他提出的问题是:想匹配不包括“TWN”,"HKG","MAC"的字符串。


    最后写出的表达式为:^(?!(HKG|MAC|TWN))[A-Z]{3}$


    上面表达式意思是匹配字符串中不包含HKG、MAC、TWN字符串

    展开全文
  • Java 正则匹配 字符串取出

    万次阅读 2010-09-28 11:31:00
    // 目标字符串 取出"!57M" String c = "ptui_checkVC('0','!57M');"; // 正则初始化 Pattern p = Pattern.compile("ptui_checkVC//('.*','(.*)'//);"); // 匹配器初始化 Matcher m = p.matcher(c); // 匹配...

     

     

    再来一个,可以更好的理解group

     

     

    展开全文
  • 随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。那些说可以现场google...

    sed命令应用广泛,使用简单,是快速文本处理的利器。它其实没多少技巧,背诵、使用是最合适的学习渠道,属于硬技能。但它又很复杂,因为高级功能太多。本篇不去关注sed的高级功能,仅对常用的一些操作,进行说明。

    随着使用,你会发现它和vim的一些理念是想通的,正则表达式的语法也基本上一样,并没有多少学习成本。从个人视野和工作效率上来看,sed命令都是程序员必须掌握的一个重要工具。

    那些说可以现场google用法的,大多习惯将文本拷贝到excel里,慢慢磨洋工,遇到大批量文件更是手忙脚乱。不是一家人不进一家门,本文不是为你写的。

    一个简单的入门

    如图,一个简单的sed命令包含三个主要部分:参数、范围、操作。要操作的文件,可以直接挂在命令行的最后。除了命令行,sed也可以通过-f参数指定一个sed脚本,这个属于高级用法,不做过多描述。

    有些示例命令我会重复多次,聪明如你一定能发现其中规律,有时连解释都用不着。

    参数 -n 这个参数是--quiet或者--silent的意思。表明忽略执行过程的输出,只输出我们的结果即可。

    我们常用的还有另外一个参数 :-i。

    使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。

    范围

    1,4 表示找到文件中1,2,3,4行的内容。 这个范围的指定很有灵性,请看以下示例(请自行替换图中的范围部分)。

    5 选择第5行。 2,5 选择2到5行,共4行。 1~2 选择奇数行。 2~2 选择偶数行。 2,+3 和2,5的效果是一样的,共4行。 2,$ 从第二行到文件结尾。

    范围的选择还可以使用正则匹配。请看下面示例。

    /sys/,+3 选择出现sys字样的行,以及后面的三行。 /^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。

    为了直观,下面的命令一一对应上面的介绍,范围和操作之间是可以有空格的。

    sed -n '5p' file

    sed -n '2,5 p' file

    sed -n '1~2 p' file

    sed -n '2~2 p' file

    sed -n '2,+3p' file

    sed -n '2,$ p' file

    sed -n '/sys/,+3 p' file

    sed -n '/^sys/,/mem/p' file

    操作 最常用的操作就是p,意思就是打印。比如,以下两个命令就是等同的:

    cat file

    sed -n 'p' file

    除了打印,还有以下操作,我们来说常用的。

    p 对匹配内容进行打印。 d 对匹配内容进行删除。这个时候就要去掉-n参数了,想想为什么。 w 将匹配内容写入到其他地方。

    a,i,c等操作虽基本但使用少,不做介绍。我们依然拿一些命令来说明。

    sed -n '2,5 p' file sed '2,5 d' file sed -n '2,5 w output.txt' file

    我们来看一下sed命令都能干些啥,上点命令体验一下。

    删除所有#开头的行和空行。

    sed -e 's/#.*//' -e '/^$/ d' file

    最常用的,比如下面这个。

    sed -n '2p' /etc/group

    表示打印group文件中的第二行。

    1、参数部分 比如 -n

    2、模式部分 比如'2p'

    3、文件,比如/etc/group

    那么我想一次执行多个命令,还不想写sed脚本文件怎么办?那就需要加-e参数。

    sed的操作单元是行。

    替换模式

    以上是sed命令的常用匹配模式,但它还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。使用替换模式很少使用-n参数。

    替换模式的参数有点多,但第一部分和第五部分都是可以省略的。替换后会将整个文本输出出来。

    前半部分用来匹配一些范围,而后半部分执行替换的动作。

    范围 这个范围和上面的范围语法类似。看下面的例子。

    /sys/,+3 选择出现sys字样的行,以及后面的三行。 /^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。

    具体命令为:

    sed '/sys/,+3 s/a/b/g' file

    sed '/^sys/,/mem/s/a/b/g' file

    命令 这里的命令是指s。也就是substitute的意思。

    查找匹配 查找部分会找到要被替换的字符串。这部分可以接受纯粹的字符串,也可以接受正则表达式。看下面的例子。

    a 查找范围行中的字符串a。

    [a,b,c] 从范围行里查找字符串a或者b或者c。

    命令类似:

    sed 's/a/b/g' file

    sed 's/[a,b,c]//g' file#这个命令我们下面解释

    替换

    是时候把找出的字符串给替换掉了。本部分的内容将替换查找匹配部分找到的内容。

    可惜的是,这部分不能使用正则。常用的就是精确替换。比如把a替换成b。

    但也有高级功能。和java或者python的正则api类似,sed的替换同样有Matched Pattern的含义,同样可以得到Group,不深究。常用的替位符,就是&。

    &号,再重复一遍。当它用在替换字符串中的时候,代表的是原始的查找匹配数据。

    [&] 表明将查找到的数据使用[]包围起来。 “&” 表明将查找的数据使用””包围起来。

    下面这条命令,将会把文件中的每一行,使用引号包围起来。

    sed 's/.*/"&"/' file

    flag 参数

    这些参数可以单个使用,也可以使用多个,仅介绍最常用的。

    g 默认只匹配行中第一次出现的内容,加上g,就可以全文替换了。常用。

    p 当使用了-n参数,p将仅输出匹配行内容。

    w 和上面的w模式类似,但是它仅仅输出有变换的行。

    i 这个参数比较重要,表示忽略大小写。

    e 表示将输出的每一行,执行一个命令。不建议使用,可以使用xargs配合完成这种功能。

    展开全文
  • java 正则匹配空格字符串 正则表达式截取字符串需求:从一堆sql中取出某些特定字符串:比如配置的sql语句为:"company_code = @cc and project_id = @pid ; update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update t2 ...
  • java正则表达式匹配字符串的方法:使用tostring,代码为【while(matcher.find()){tmp.add(matcher.group(1).toString());}】。java正则表达式匹配字符串的方法:使用tostringprivate static List getImage(String ...
  • java 正则匹配空格字符串 正则表达式截取字符串 需求:从一堆sql中取出某些特定字符串: 比如配置的sql语句为:"company_code = @cc and project_id = @pid ; update t set a = @aa,b=@bb,c=@cd,ttt=@ttt;update ...
  • 正则表达式异常强大,一直理解不深,用的也不深,这次项目中尝试,体会到了它的强大之处...字符串查找,匹配,替换,正则无不能做,特别是灵活的运用子串匹配得到的变量值$1,$2,再进行二次处理能够达到很巧妙的效果。
  • 一位以前的同事在群里面突然发了个需求,要通过正则表达式来取值。给我发过来一张图, 从图中可以出,需求是,通过下面的正则表达式,取出红色框所标示的内容开始理解错误,我以为是要取出中间的那些内容,不包括"...
  • import java.util.regex.*;public class RegexCountString{public static void main(String[] args) {String s = "6sabcss sfsfs33";Pattern p = Pattern.compile("[a-z|A-Z]");Matcher m = p.m...
  • Java正则表达式的处理集中在以下两个两个类:java.util.regex.Matcher 匹配类:用模式匹配一个字符串所表达的抽象结果。java.util.regex.Pattern 模式类:用来表示一个编译过的正则表达式。比如一个简单例子:...
  • 1.根据字符串内容前后匹配查询中间内容 @Test public void test(){ String sss ="19/11/28 15:04:36 INFO Client: Application report for application_1574829583306_0018 has started r...
  • 今天遇到一个字符串,怎么匹配空格都不成功!!!我把空格复制到test.properties文件 显示“\u3000” ,这是什么? 这是全角空格!!!查了一下 \s 不支持全角1、"\s"匹配的是哪一种空格?正则表达式中\s匹配任何空白...
  • 利用正则表达式,密码设置长度为8到10,以字母开头必须要有数字必须要有下划线。
  • Java或任何开放源代码库中是否有任何方法可以转义(不引用)特殊字符(元字符),以便将其用作正则表达式?动态构建正则表达式非常方便,而不必手动转义每个字符。例如,考虑一个简单的正则表达式\d+\.\d+,它匹配带...
  • 一个奇怪的需求,需要匹配字符串里面的123e这样子的东西,并替换成123*e。比如3e / 21e这样子。假如目标字符串是123efg45emkd89eqq,则替换之后的字符串应该是123*efg45*emkd89*eqq。 也就是说凡是数字和e的组合...
  • 今天遇到一个字符串,怎么匹配空格都不成功!!!我把空格复制到test.properties文件 显示“\u3000” ,这是什么? 这是全角空格!!!查了一下 \s 不支持全角1、"\s"匹配的是哪一种空格?正则表达式中\s匹配任何空白...
  • 今天遇到的一个问题就是,将两个double类型的数据连接成为一个字符串,然后将其读出来,在当成两个double类型的数据进行处理。首先用的就是将两个double类型的数据进行连接。double num1 = 1;double num2 = 2;String...
  • 今天练习java比赛题时,忘记了java的正则表达式怎么用,特地查了一下。觉得用好正则表达式真的是能有意想不到的效果。 Talk is cheap,show you their code ...public class java正则表达式 { publ...
  • java正则表达式如何获取...java正则表达式如何获取字符串中所有匹配内容java正则表达式提取需要用到Matcher类。正则规则就是“一个数字加上大于等于0个非数字再加上结束符”Pattern pattern= Pattern.pile("(\\d)[^...
  • String s = "lsx[ip:192.168.19.176]的[Physical Memory]...[ip:192.168.19.158]"; String reg = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?... //匹配ip的正则 System.out.println(s.r
  • Java正则匹配两个字符串之间的内容1、公共类接口2、公共类实现方法3、测试类 废话不多说了,很简单,我只是总结了一下,直接看代码吧! 1、公共类接口 import java.util.ArrayList; /** * Implementing <code&...
  • 比如现在有这样一个字符串 **“ A4,80列,三层,带双列线,二等分 白色 1200页/箱 ,10箱/包 ”** 我需要把它分开处理, **“A4,80列,三层,带双列线 ,二等分”**作为产品的规格,**“白色”**作为产品的颜色,*...
  • 展开全部java正则提取需要用到32313133353236313431303231363533e59b9ee7ad9431333361303565Matcher类,下面给出案例示例供参考需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6importjava.util....
  • java中,很多时候需要解析一段字符串获取符合条件的所有匹配项。下面例子获取一段字符串中满足 ${字母数字} 条件的字符串的代码​import java.util.List;import java.util.regex.Matcher;import java.util.regex....

空空如也

空空如也

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

java正则匹配字符串

java 订阅