首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在regex JAVA中使用Pattern Matcher时,如何获取剩余的不匹配字符串?

在regex JAVA中使用Pattern Matcher时,可以使用find()方法来查找下一个匹配项,并使用start()end()方法来获取匹配项的起始和结束位置。如果想要获取剩余的不匹配字符串,可以使用region()方法来设置匹配的区域范围,然后使用group()方法来获取不匹配的部分。

具体步骤如下:

  1. 创建一个Pattern对象,用于表示正则表达式模式。
  2. 使用Pattern对象的matcher()方法创建一个Matcher对象,用于匹配字符串。
  3. 使用Matcher对象的find()方法查找下一个匹配项。
  4. 如果找到了匹配项,可以使用start()end()方法获取匹配项的起始和结束位置。
  5. 使用region()方法设置匹配的区域范围,将其设置为当前匹配项的结束位置。
  6. 使用group()方法获取不匹配的部分,即剩余的字符串。
  7. 重复步骤3到步骤6,直到没有更多的匹配项。

以下是一个示例代码:

代码语言:txt
复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String[] args) {
        String input = "Hello, world! This is a test.";
        String pattern = "\\b\\w+\\b"; // 匹配单词

        Pattern regex = Pattern.compile(pattern);
        Matcher matcher = regex.matcher(input);

        int lastMatchEnd = 0; // 上一个匹配项的结束位置

        while (matcher.find()) {
            int matchStart = matcher.start();
            int matchEnd = matcher.end();

            // 获取不匹配的部分
            String unmatched = input.substring(lastMatchEnd, matchStart);
            System.out.println("Unmatched: " + unmatched);

            lastMatchEnd = matchEnd;
        }

        // 获取最后一个匹配项之后的不匹配部分
        String unmatched = input.substring(lastMatchEnd);
        System.out.println("Unmatched: " + unmatched);
    }
}

输出结果为:

代码语言:txt
复制
Unmatched: 
Unmatched: , 
Unmatched:  world! 
Unmatched:  This 
Unmatched:  is 
Unmatched:  a 
Unmatched:  test.

在上述示例中,我们使用正则表达式模式\b\w+\b来匹配单词。通过循环遍历匹配项,我们获取了每个匹配项之前的不匹配部分,并输出了结果。最后,我们还获取了最后一个匹配项之后的不匹配部分。

请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java魔法堂:深入正则表达式API

matcher(CharSequence input);    2. java.util.regex.Matcher类 :匹配类,用于存储模式实例匹配字符串后所产生结果。        ...:子表达式) ,非捕获分组,该类型分组将不纳入匹配对象group属性,并且无法通过反向引用在表达式后续部分获取该分组内容。通常是配合 | 使用。...子表达式) ,命名分组,该类型分组将纳入匹配对象group属性,并且可以group属性值通过name值来获取该分组值。     [d].  (?...子表达式A) ,零宽负向先行断言(也称为预搜索匹配)。例如匹配字符串"abcd"c和d正则表达式可以是 \w(?!\w{2})   3....例如匹配字符串"abcd"c和d正则表达式可以是 (?<=\w{2})\w [b]. (?<!子表达式A)子表达式B ,零宽负向后行断言(也称为反向搜索匹配)。

1.3K50

java正则表达式http_Java 正则表达式(精华)

英文:Jakob Jenkov 译文:严亮 链接:ifeve.com/java-regex/ Java 提供了功能强大正则表达式API,java.util.regex 包下。...本教程介绍如何使用正则表达式API。 正则表达式 一个正则表达式是一个用于文本搜索文本模式。换句话说,文本搜索出现模式。例如,你可以用正则表达式搜索网页邮箱地址或超链接。...代码只是简单查找字符串 http:// 是否出现。 Java6 关于正则表达式API 本教程介绍了Java6 关于正则表达式API。...Pattern (java.util.regex.Pattern) 类 java.util.regex.Pattern 简称 Pattern, 是Java正则表达式API主要入口,无论何时,需要使用正则表达式...Matcher (java.util.regex.Matcher) java.util.regex.Matcher 类用于匹配一段文本多次出现一个正则表达式,Matcher 也适用于多文本匹配同一个正则表达式

1.4K10

Java正则表达式详解

Java 提供了功能强大正则表达式API,java.util.regex 包下。本教程介绍如何使用正则表达式API。 正则表达式 一个正则表达式是一个用于文本搜索文本模式。...代码只是简单查找字符串 http:// 是否出现。 Java6 关于正则表达式API 本教程介绍了Java6 关于正则表达式API。...Pattern (java.util.regex.Pattern) 类 java.util.regex.Pattern 简称 Pattern, 是Java正则表达式API主要入口,无论何时,需要使用正则表达式...Matcher (java.util.regex.Matcher) java.util.regex.Matcher 类用于匹配一段文本多次出现一个正则表达式,Matcher 也适用于多文本匹配同一个正则表达式...find() + start() + end() find() 方法用于文本查找出现正则表达式,文本是创建Matcher,通过 Pattern.matcher(text) 方法传入

2.4K00

优秀攻城师必知正则表达式语法

Java里面,关于正则有两个核心类,分别是: (1)java.util.regex.Pattern (2)java.util.regex.Matcher Pattern类用于创建和预编译正则表达式,并能够将自身规则与文本进行匹配...上面这些字符,使用时候需要转义,注意在Java语言里面转义写两个反斜杠: \\+ 简单解释一下,两个反斜杠表示是一个反斜杠意思,所以如果要对某些元字符转义需要使用两个反斜杠才可以。...=pattern) 执行正向预测先行搜索子表达式,该表达式匹配处于匹配 pattern 字符串起始点字符串。它是一个非捕获匹配,即不能捕获供以后使用匹配。例如,'Windows (?...pattern) 执行反向预测先行搜索子表达式,该表达式匹配处于匹配 pattern 字符串起始点搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用匹配。例如,'Windows (?!...历史文章: 如何动手撸一个LRU缓存 如何动手撸一个简单LFU缓存 Java里面如何解决进退两难jar包冲突问题? Java基本类型内存分配在栈还是堆 什么是缓存置换算法?

1.3K30

恭喜你,Get到一份 正则表达式 食用指南

Java中正则表达式使用 字符串内置正则 Java 中有四个内置运行正则表达式方法,分别是 matches()、split())、replaceFirst()、replaceAll()。...Java regex使用正则表达式基本步骤 通过正则表达式创建模式对象 Pattern。 通过模式对象 Pattern,根据指定字符串创建匹配对象 Matcher。...模式分组后会在正则表达式创建反向引用。反向引用会保存匹配模式分组字符串片断,这使得我们可以获取使用这个字符串片断。...Java 反斜杠 反斜杠 \ Java 中表示转义字符,这意味着 \ Java 拥有预定义含义。 这里例举两个特别重要用法: 匹配 . 或 { 或 [ 或 ( 或 ?...匹配 \ Java 要写为 \\\\,但对于正则表达式来说就是 \\。

59610

22 Java 正则表达式

第一种情况,表达式 [a-z]* 只匹配字符 c,使得字符 ab 匹配该模式剩余部分;但是贪婪版本[a-z]*+ 将匹配字符 cab,模式剩余部分将无法匹配。...Java 正则表达式类使用语法与 Perl 语言使用语法十分相似,但是并不完全一样。表 1-8 展示Java语法所有结构。...MULTILINE :^ 和 $ 匹配开头和结尾,而不是整个输入开头和结尾。 UNIX_LINES :多行模式匹配 ^ 和 $ ,只有 '\n' 被识别成行终止符。...) 通常,你希望用正则表达式来匹配全部输入,而只是想找出输入中一个或多个匹配字符串。...如果 limit<0,那么这个输入都被分割;如果 limit 为 0,那么坠尾字符串将不会置于返回数组 java.util.regex.Matcher 1.4 * boolean matches

39410

根据正则表达式截取字串符,这个办法打败99%程序员

作为一名程序员,常常会在以下情况下使用函数功能根据正则表达式截取字符串: 1.字符串处理:当需要使用正则表达式匹配和提取字符串特定模式,可以使用该函数。...substringByRegex方法,首先使用Pattern.compile方法创建了一个正则表达式模式对象pattern,该对象由输入正则表达式字符串regex编译而来。...然后,使用pattern对象matcher方法创建了一个匹配器对象matcher,该匹配器用于输入字符串inputString查找与正则表达式匹配部分。...使用matcher对象find方法输入字符串查找匹配正则表达式字符串。如果找到匹配字符串,find方法将返回true,否则返回false。...如果find方法返回true(即找到了匹配字符串),则使用matcher对象group方法获取第一个匹配字符串,并返回该子字符串

52500

java正则表达式

今天我们简单聊聊Java正则表达式~ 正则表达式基础 正则表达式(Regular Expression,简称Regex)是一种强大文本处理工具,它定义了搜索或操作字符串一种逻辑公式。...Java,正则表达式处理是通过java.util.regex.Patternjava.util.regex.Matcher类来实现。...([0-9]{4})$ 这些模式利用了字符类、锚点、可选匹配和分组等正则表达式概念。 语法和用法 Java,可以使用PatternMatcher类来应用正则表达式。...Java正则表达式API Java编程,处理正则表达式主要API位于java.util.regex。...每次调用find()方法,它都会搜索输入字符串下一个匹配项,并返回true。通过调用group()方法,我们可以获取当前匹配字符串

8710

(89) 正则表达式 () 计算机程序思维逻辑

上节介绍了正则表达式语法,本节介绍相关Java API。 正则表达式相关类位于包java.util.regex下,有两个主要类,一个是Pattern,另一个是Matcher。...字符串类String也是一个重要类,我们29节专门介绍过String,其中提到,它有一些方法,接受参数不是普通字符串,而是正则表达式。此外,正则表达式Java是需要先以字符串形式表示。...Java,没有什么特殊语法能直接表示正则表达式,需要用字符串表示,而在字符串,'\'也是一个元字符,为了字符串中表示正则表达式'\',就需要使用两个'\',即'\\',而要匹配'\'本身,就需要四个...编译有一定成本,而且Pattern对象只与正则表达式有关,与要处理具体文本无关,它可以安全地被多线程共享,所以,使用同一个正则表达式处理多个文本,应该尽量重用同一个Pattern对象,避免重复编译...小结 本节介绍了正则表达式相关主要Java API,讨论了如何Java中表示正则表达式,如何利用它实现文本切分、验证、查找和替换,对于替换,我们演示了一个简单模板引擎。

1K70

正则十八式-第二式:控鹤擒龙

藏扇仙:问号紧加限定尾,即非贪婪 捷特:师傅,这波稳,通过两个限定符进行夹逼 藏扇仙:所以这招名为-控鹤擒龙 二、Java正则 藏扇仙:这是为师看家法宝之一,Java加工机。...│ │ ├── book.txt │ │ └── regx.txt 1.字符流读取文件 为了使用方便,读取文件来解析,由于我们使用字符串,直接用...,过滤擒龙 上面的黄色匹配部位都可以通过代码获取。...Java通过PatternMatcher两类完成 下面这样就可以很轻松地获取文件中所有的书名,无论几十万行,几百万行,通行无阻 private static void regexBook(String...藏扇仙:这招控鹤擒龙,你可要多加练习,提取信息是非常有用

52820

编程思想 之「字符串

此外,使用split()方法时候,原始字符串与正则表达式匹配部分,最终结果中都不存在了。而且,如果正则表达式不是只使用一次的话,非String对象正则表达式具有更佳性能。...类静态compile方法编译正则表达式字符串生产Pattern对象,如Pattern.compile(regex); 再调用Pattern对象matcher()方法,生成一个Matcher对象; 最后...(regex); // 使用 Matcher 对象方法对字符串进行操作,为了获取三个字母组成单词,可以用查找 find() 方法 Matcher matcher =...如上述所示,演示了如何通过PatternMatcher对象使用正则表达式,其中Pattern对象表示编译后正则表达式,Matcher对象则提供了众多可供正则表达式使用方法。...(regex); // 调用 Pattern 对象 matcher() 方法,获取 Matcher 对象 Matcher matcher = pattern.matcher

46130

一般人不敢动系列之—基于logback日志“规范”和“脱敏”

3)脱敏: 日志存在特定规则字符串,比如手机号,需要对其进行脱敏处理。...简单来说,你需要将参数传递给Converter,这些参数必须以option方式声明某个字段上,否则没法做。 特别注意,如果option参数包含{、},必须将option参数使用''包括。...maxLength 默认值为2048,即message最大长度超过此值后将会被截取,可配置。 policy 对于regex匹配成功字符串如何处理。...; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** *...我门还要避免message处理过程,新建太多字符串,否则会大量消耗内存;处理,尽可能确保主message只有一个,replace不改变message长度,可以避免因为重建String导致一些空间浪费

5K20

详解Java API之正则表达式

二、Java API对正则表达式支持      Java,对正则表达式支持,主要还是java.util.regex这个包,我们常用是其中PatternMatcher这两个类。...其中Pattern绑定了一个正则表达式,也就是代表了一个规则,Matcher绑定了一个Pattern和一个被处理字符串,我们可以利用Matcher一些方法来完成匹配工作。...下面通过介绍String几个基本方法,了解正则表达式Java基本使用情况。 首先我们看split方法,该方法用于分割字符串,返回一个String数组。...(regex); Matcher m = p.matcher(input); return m.matches(); } 这是一个非常标准对正则表达式处理流程,首先编译(绑定)正则表达式字符串获取...Pattern实例,然后调用Patternmatcher方法获取Matcher实例,接着就可以利用Matcher实例完成大量工作。

84690

Java正则速成秘籍(一)之招式篇

又爱又恨正则 正则表达式是一个强大文本匹配工具,但是它规则实在很繁琐,而且理解起来也颇为蛋疼,容易让人望而生畏。 如何学习正则 刚接触正则,我看了一堆正则语义说明,但是仍然不明所以。...概述 JDKjava.util.regex包提供了对正则表达式支持。 java.util.regex有三个核心类: Pattern类:Pattern是一个正则表达式编译表示。...注:需要格外注意一点,Java使用反斜杠"\"必须写成 "\\"。所以本文代码出现形如String regex = "\\$\\{.*?\\}" 其实就是"\$\{.*?...类可以说是java.util.regex核心类必杀技!...上面的例子是想将 ${productName} 替换为 ${product} ,然而replaceAll方法却将传入字符串$当做特殊字符来处理了。结果产生异常。 如何解决这个问题?

1K80

Java 中文官方教程 2022 版(十一)

Pattern.CASE_INSENSITIVE 启用不区分大小写匹配。默认情况下,区分大小写匹配假定只有 US-ASCII 字符集中字符被匹配。...(s 是"single-line"模式缩写, Perl 称为这种模式。) Pattern.LITERAL 启用模式字面解析。当指定此标志,指定模式输入字符串被视为一系列字面字符。...由于我们仍在使用PatternMatcher对象,您可以使用 split 来获取任何正则表达式两侧文本。...浏览器 Java 插件软件管理小程序生命周期。 使用 Web 服务器来测试本课程示例。建议使用本地小程序,当 Java 控制面板安全级别设置为高或非常高,本地小程序将被阻止。...有关如何使用此功能更多详细信息,请参见如何使用根窗格。 一个小程序可以扩展java.applet.Applet类,当它不使用 Swing GUI 组件

5400

Java正则

总结了一下java正则常用规则,具体如下 一些概念: 1、正则各类特殊符号。...包括限定符、非打印字符、定位符、元字符,它们区别见TestCase 2、JAVA正则API使用     常用方式是如下结构 Pattern patternPattern.compile(正则表达式...);   //获得Matcher对象 Matcher matcherpattern.matcher(目标字符串);   //返回匹配结果 boolean类型,匹配返回true、匹配返回false...; import org.junit.Test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @ProjectName...避免与正则特殊字符冲突 //2、注意组使用(),使用后,可以匹配matcher获得匹配具体内容 //3、$代表以前面的字符串结尾,以.com结尾

1.2K20
领券