JAVA从零开始18_基础API之爬虫

一、爬虫

PatternMatcher类是Java中的正则表达式库,用于匹配和处理字符串。通过使用这两个类,你可以从一段文本中提取特定的内容。下面是一个简单的示例,说明如何使用PatternMatcher类从一段文本中提取所有电子邮件地址:

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

public class RegexExample {
   
    public static void main(String[] args) {
   
        String text = "Please send an email to john.doe@example.com or jane.doe@example.org for more information.";
        String emailRegex = "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b";

        Pattern pattern = Pattern.compile(emailRegex);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
   
            String email = matcher.group();
            System.out.println("Found email: " + email);
        }
    }
}

在这个示例中,我们首先定义了一个字符串text,它包含了两个电子邮件地址。然后我们创建一个电子邮件的正则表达式emailRegex,用于匹配电子邮件地址。

接下来,我们使用Pattern.compile(emailRegex)方法创建一个Pattern对象。然后,我们使用pattern.matcher(text)方法创建一个Matcher对象,它将在text中查找与emailRegex匹配的子字符串。

最后,我们使用while (matcher.find())循环遍历所有匹配项,并使用matcher.group()方法获取匹配到的电子邮件地址。运行此代码将输出以下结果:

Found email: john.doe@example.com
Found email: jane.doe@example.org

你可以根据自己的需求修改正则表达式和文本内容,以便从文本中提取所需的信息。


二、?i、?:、?=、?!

在Java的正则表达式中,(?i)(?:)(?=)(?!)都是正则表达式的特殊构造,具有特定的功能和含义。以下是它们各自的解释和示例:

  1. (?i):忽略大小写

    (?i)表示在正则表达式的后面部分忽略大小写。示例:

    String text = "Hello World!";
    String regex = "(?i)hello";
    System.out.println(text.matches(regex)); // 输出:false
    

    在这个示例中,正则表达式(?i)hello将匹配任何大小写组合的"hello"。

  2. (?:):非捕获组

    (?:)表示一个非捕获组,它允许你将正则表达式的一部分分组,但不会将匹配的文本捕获到一个单独的组中。示例:

    String text = "The car is blue.";
    String regex = "The (?:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值