java如何用正则表达式匹配与提取字符串

java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法。

首先给出一个匹配字符串的例子(判断line是否符合格式"GraphType\\s*=\\s*\".+\"\\s*"):

public static boolean isLegalInputLine(String line )   {
        Pattern p =Pattern.compile("GraphType\\s*=\\s*\".+\"\\s*");
         Matcher m = p.matcher(line);
        boolean r =m.matches();
        return r;
    }

这个函数判断line是否匹配格式"GraphType\\s*=\\s*\".+\"\\*",这里的格式是使用java的正则表达式语法规则书写的。具体的语法规则我提供一个网址:https://wenku.baidu.com/view/e109601f52d380eb62946d75.html?rec_flag=default&mark_pay_doc=2&mark_rec_page=1&mark_rec_position=4&mark_rec=view_r_1&clear_uda_param=1
里面有具体的介绍。

下面给出用正则表达式提取字符串的例子(从s中提取匹配格式"GraphType\\s*=\\s*\".+\"\\s*"的字符串):

public List<String> getString(String s) {
   List<String> strs = new ArrayList<String>();
   Pattern p = Pattern.compile("GraphType\\s*=\\s*\".+\"\\s*");
   Matcher m = p.matcher(s);
   while(m.find()) {
     strs.add(m.group());
   }
   return strs;
}

有一款叫做Regex Match Tracer的软件,可以用它来练习书写java的正则表达式。值得注意的是这款软件匹配和提取字符串的结果和java中的有所不同,有时这块软件不能识别的,java可以识别,笔者就碰到过这种情况。

另外对于学过形式语言与自动机的要注意java的语法规则与形式语言与自动机里面的正则语法不同。

附:Java正则取出每一个匹配的字符串

        String data = "我的1<if test='case == 1'>1</if>我的2<if test='case == 2'>2</if>";
        String regex = "<if test='([\\s\\S]*?)'>([\\s\\S]*?)</if>";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(data);
        while (matcher.find()) {
            String group = matcher.group();
            System.out.println(group);
        }

总结

到此这篇关于java如何用正则表达式匹配与提取字符串的文章就介绍到这了,更多相关java 正则匹配提取字符串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java正则表达式判断字符串中是否包含中文示例

    前言 在日常开发编程中,我们有时从用户那里得到一些输入信息,对于特定应用,部分信息不允许包含中文字符,那如何检测信息字符串中是否包含中文字符呢? 方法有很多,这篇文章就介绍一下如何通过正则表达式来实现这个需求. 示例代码 package cn.sunzn.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo { public static void main(String[]

  • Java使用正则表达式判断字符串是否以字符开始

    Java 正则表达式判断字符串是否以字符开始: public static boolean startWithChar(String s) { if (s != null && s.length() > 0) { String start = s.trim().substring(0, 1); Pattern pattern = Pattern.compile("^[A-Za-z]+$"); return pattern.matcher(start).matche

  • java 正则表达式获取两个字符中间的字符串方法

    搞社区APP的时候,需要实现这个功能: String filetext = "//@张小名: 25分//@李小花: 43分//@王力: 100分"; Pattern p = Pattern.compile("\\@(.*?)\\:");//正则表达式,取=和|之间的字符串,不包括=和| Matcher m = p.matcher(filetext); while(m.find()) { System.out.println(m.group(0));//m.group

  • Java字符串 正则表达式详解

    目录 一.规则表 1.字符 2.字符类 . 3.边界匹配符 4.逻辑操作符 5.量词 二.Pattern类 1.Pattern类的实例获取-compile方法 2.split方法 3.Pattern中匹配标记参数 三.Matcher类 总结 在日常Java后端开发过程中,免不了对数据字段的解析,自然就少不了对字符串的操作,这其中就包含了正则表达式这一块的内容,这里面涉及Java包中Pattern类和Macher类,本篇博客就针对这一块内容和常见的用法进行总结,本博客主要的参考资料是<Java编程

  • java使用正则表达式查找包含的字符串示例

    本文实例讲述了java使用正则表达式查找包含的字符串.分享给大家供大家参考,具体如下: Hello.java: package hello; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Hello { public static void main(String[] args) { String re = "\\[([^\\]]+)\\]"; String str = &quo

  • Java通过正则表达式获取字符串中数字的方法示例

    前言 本文通过一个小范例来学习java中通过正则表达式如何获得一个字符串中的数字,下面话不多说,来看看详细的介绍吧. 示例代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { String strInput = "3a7s10@5d2a6s17s56;33"; String reg

  • java如何用正则表达式匹配与提取字符串

    java.util.regex类支持用正则表达式来匹配和提取字符串,读者可以去官网查看java.util.regex的详细使用方法. 首先给出一个匹配字符串的例子(判断line是否符合格式"GraphType\\s*=\\s*\".+\"\\s*"): public static boolean isLegalInputLine(String line ) { Pattern p =Pattern.compile("GraphType\\s*=\\s*\&

  • Java中s.charAt(index)用于提取字符串s中的特定字符操作

    charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法. charAt()方法返回指定索引位置的char值.索引范围为0~length()-1. 如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符. 警告:在字符串s中越界访问字符是一种常见的程序设计错误.为避免此类错误要确保使用的下标不会超过s.length()-1. public class hash { public sta

  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

  • Python正则表达式匹配和提取IP地址

    Linux No.1 IPv4 下面是IPv4的IP正则匹配实例: 简单的匹配给定的字符串是否是ip地址 import re if re.match(r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$", "236.168.192.1"): print "IP vaild" else: print "IP invaild" 精确的匹配给定的字符串是否是IP地址 import re if re.match(r&q

  • C#正则表达式匹配与替换字符串功能示例

    本文实例讲述了C#正则表达式匹配与替换字符串功能.分享给大家供大家参考,具体如下: 事例一:\w+=>[A-Za-z1-9_],\s+=>任何空白字符,()=>捕获 string text = @"public string testMatchObj string s string match "; string pat = @"(\w+)\s+(string)"; // Compile the regular expression. Regex

  • Python 正则表达式匹配数字及字符串中的纯数字

    Python 正则表达式匹配数字 电话号码:\d{3}-\d{8}|\d{4}-\d{7} QQ号:[1-9][0-9]{4,} 中国邮政编码:[1-9]\d{5}(?!\d) 身份证:\d{15}|\d{18} ip地址:\d+\.\d+\.\d+\.\d+ [1-9]\d*      正整数 -[1-9]\d* 负整数 -?[1-9]\d* 整数 [1-9]\d*|0 非负整数 -[1-9]\d*|0 非正整数 [1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 正浮点数 -([1-

  • python使用正则表达式匹配txt特定字符串(有换行)

    在原txt文件中,我们需要匹配出的字符串为:休闲服务(中间参杂着换行) 直接复制到notebook里进行处理 ①发现需要拿出的字符串都在证卷研究报告前,第一步就把证券报告前面的所有内容全部提出来(包括换行) ②发现需要的字符串在两个换行符(\n)的中间,再对其进行处理 完整代码 import re txt = """ 行业报告 | 行业点评 休闲服务 证券研究报告""" result = re.findall(r"([\s\S]*)证券

  • 使用正则表达式匹配[***]样式的字符串

    源码如下: 复制代码 代码如下: - (NSUInteger)analyseRX:(NSString *)string withPatternString:(NSString *)patternString{    //     \\[[^\\]]+\\]  用以匹配字符串中所出现的 [*] 的个数    //     <[^>]+>        用以匹配字符串中所出现的 <*> 的个数 if (string == nil)    {        return 0;   

  • 正则表达式匹配${key}并在Java中使用的详细方法

    1.正则表达式匹配${key} \$\{([a-z]+)\} 能够匹配字符串中以${key}形式的文本(其中key为小写英文字母) .*\$\{([a-z]+)\}.* 可以用来检测文本中是否有${key}形式的文本 解释如下: . 匹配除换行符\n之外的任何单字符 * 匹配前面的子表达式零次或多次 要匹配*字符,请使用\* { 标记限定符表达式的开始.要匹配 {,请使用 \{ [a-z] 匹配小写字母 +匹配前面的子表达式一次或多次.要匹配+字符,请使用\+;+限定是贪婪的,因为它们会尽可能多

  • Java正则表达式匹配字符串并提取中间值的方法实例

    目录 前言 场景一:提取SAML2报文 解析 场景2:提取sql中的表名和字段 总结 前言 有时候正则表达式不只是匹配一下什么数字/邮箱/身份证/日期等等,还需要匹配某一段文字,并按照既定格式提取其中的某些值. 场景一:提取SAML2报文 SAML2报文内容如下,从中提取对应的attribute name和value. <saml:AttributeStatement> <saml:Attribute Name="mail"> <saml:Attribut

随机推荐