首页 > 其他分享 >Pattern的使用与Matcher正则表达式的使用。

Pattern的使用与Matcher正则表达式的使用。

时间:2024-07-30 13:51:38浏览次数:8  
标签:group 正则表达式 Pattern Matcher matcher 匹配 find

Pattern的使用
在Java中,java.util.regex.Pattern 类用于表示正则表达式的编译表示。正则表达式是一种强大的模式匹配工具,它可以用于搜索、替换和解析字符串。以下是一些常见的正则表达式匹配规则:
普通字符:
大多数字符都是普通字符,它们匹配自身。例如,正则表达式 abc 将匹配字符串 “abc”。
字符类:
用方括号 [] 表示,可以匹配其中的任何一个字符。例如,[abc] 可以匹配 “a”、”b” 或 “c” 中的任意一个字符。
预定义字符类:
包括 \d(匹配任意数字)、\w(匹配任意字母、数字或下划线)、\s(匹配任意空白字符)等。
数量词:
用于指定匹配次数,例如 *(零次或多次)、+(一次或多次)、?(零次或一次)、{n}(恰好 n 次)、{n,}(至少 n 次)等。
边界匹配:
^ 表示匹配字符串的开头,$ 表示匹配字符串的结尾。
分组:
使用小括号 () 可以将多个项组合在一起,形成一个子表达式。
转义字符:
使用反斜杠 \ 可以转义特殊字符,使其成为普通字符。例如,. 可以匹配实际的句号字符。
或操作:
使用竖线 | 可以表示或操作,例如 a|b 可以匹配 “a” 或 “b”。
这些只是正则表达式的一些基本规则,正则表达式还有许多其他高级特性和语法。在使用正则表达式时,您可以根据具体的需求来组合这些规则,以实现复杂的模式匹配

Matcher
在 Java 的 Matcher 类中,find 和 group 方法是用于在字符串中查找匹配的子序列的重要方法。

find 方法
find 方法尝试在输入的字符串中查找下一个匹配的子序列。
如果找到了匹配的子序列,则返回 true,否则返回 false。
每次调用 find 方法,都会从上次匹配的位置开始继续查找下一个匹配的子序列。
以下是一个简单的示例,演示如何使用 find 方法查找匹配的子序列:

String text = “The cat and the hat”;
String patternString = “cat”;
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);

while (matcher.find()) {
System.out.println(“Found the word "“ + matcher.group() + “" starting at index “ + matcher.start() + “ and ending at index “ + matcher.end());
}

group 方法
group 方法用于返回当前匹配的子序列。
如果正则表达式中有多个括号表达式,group 方法还可以用于返回每个括号表达式匹配的子序列。
以下是一个简单的示例,演示如何使用 group 方法获取匹配的子序列:

String text = “John Smith’s birthday is 01-02-1990”;
String patternString = “(\d{2})-(\d{2})-(\d{4})”;
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(text);

if (matcher.find()) {
System.out.println(“Full match: “ + matcher.group(0));
System.out.println(“Day: “ + matcher.group(1));
System.out.println(“Month: “ + matcher.group(2));
System.out.println(“Year: “ + matcher.group(3));
}
在这个示例中,我们使用了一个带有括号表达式的正则表达式,然后通过 group 方法获取了每个括号表达式匹配的子序列。

希望这些示例能够帮助您更好地理解 find 和 group 方法在 Java 中的使用。

简单示例
以下是一个简单的示例,演示如何在 Java 中使用 Pattern 类和 matches 方法:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexMatches {
public static void main(String[] args) {
String text = “Hello, this is a sample text.”;
String pattern = “.sample.“;

// 使用 Pattern 类编译正则表达式
Pattern p = Pattern.compile(pattern);

// 使用 matches 方法进行匹配
boolean isMatch = p.matcher(text).matches();

System.out.println("Text matches the pattern? " + isMatch);

}
}

标签:group,正则表达式,Pattern,Matcher,matcher,匹配,find
From: https://www.cnblogs.com/guoxinghe/p/18332200

相关文章

  • 仅使用正则表达式替换特定字符之间的空格
    我正在尝试使用正则表达式替换markdown文档中包含的乳胶中的空格。\\;在我使用的md包中,所有乳胶都包裹在或$I中想要将以下内容从$$更改为"donteditthis$result=\frac{1}{4}$donteditthis$$someresult=123$$"我已经......
  • python 正则表达式匹配一行中的多个单词而不转到下一行
    我正在编写一个解析器来解析以下输出:admin@str-s6000-on-5:~$showinterfacestatusEthernet4InterfaceLanesSpeedMTUAliasVlanOperAdminTypeAsymPFC------------------------------------------......
  • 如何从pandas中的字符串中提取带有变量的正则表达式?
    我有一个包含文本的数据框列,我想创建一个新列,其中包含带有名称的句子,但没有其他句子。希望最终结果如下所示:我能够从名称列表中识别包含名称的单元格,但我在提取包含名称的句子的部分上遇到了困难。importreimportpandasaspdimportnumpyasnpdf=pd.Dat......
  • HV000030: No validator could be found for constraint ‘javax.validation.constrai
    原文链接:https://blog.csdn.net/miachen520/article/details/119817478错误原因:数字类型不能使用javax.validation.constraints.Pattern注解解决办法方法一:.将字段类型设置为String类型;方法二:使用其他验证注解验证,数字的有@Size,@Min,@Max,@Range现将@Valid常用注解介绍如下:Be......
  • pytube.exceptions.RegexMatchError:get_throtdling_function_name:找不到多个匹配
    我曾经通过以下方式下载歌曲:frompytubeimportYouTubevideo=YouTube('https://www.youtube.com/watch?v=AWXvSBHB210')video.streams.get_by_itag(251).download()从今天开始出现此错误:Traceback(mostrecentcalllast):File"C:\Users\Me\AppData\Local\P......
  • Sublime Text提取正则表达式匹配的文本
    最近在使用爬虫分析一些网站的返回数据json的时候,想要批量提取里面的一些网址,写代码当然可以完成。如果对于没有代码基础的人来说,也可以使用SUblime来实现。比如我想提取以http://开头的,以.webp为结束的网址可以这样写操作。Ctrl+F,打开查找,开启第一个正则表达式,里面这样填写......
  • 常用设计模式-单例模式(Singleton pattern)
    常用设计模式-单例模式(Singletonpattern)一、单例模式目的使用单例模式第一步要了解其作用,单例理解为一个实例(oneinstance)。保证一个类只有一个它的实例。在实际开发中,如线程池,数据库连接对象等。二、实现思路为了保证oneclassoneinstance①则需要保证实例全局唯一,保......
  • 如何选择适合的正则表达式引擎
    1、了解需求和场景:不同的应用场景对正则表达式的性能、功能和易用性有不同的要求。例如,数据验证、文本搜索和替换、日志分析、URL路由等场景对正则表达式的需求各不相同。明确你的需求,例如是否需要支持复杂的正则表达式特性(如捕获组、环视、占有优先量词等)、是否要求高效......
  • 使用正则表达式删除Python中常见的公司名称后缀
    我正在努力删除一些公司名称中的后缀。预期结果如下:原始名称:AppleInc.SonyCorporationFiatChryslerAutomobilesS.p.A.SamsungElectronicsCo.,Ltd.清除名称:AppleSonyFiatChryslerAutomobilesSamsungElectronics到目前为止我所做的:importred......
  • Android开发- 正则表达式Pattern类与Matcher类的解析与使用
    简介使用正则表达式需要用到两个类:Pattern类与Matcher类其中Pattern类用来制定匹配规则,而Matcher类用来接收需要进行匹配的字符串Pattern类Patternpattern=Pattern.compile(Stringregex);:Pattern类的创建方法参数解析:regex:取值类型为正则表达式字符串;设置匹配规则......