正则表达式,又称规则表达式。(英语:Regular expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在正则表达式中通常有某个字符可以匹配若干个字符。假设在某程序设计语言的正则表达式中“*”就可以匹配0个或多个字符。比如a*b可以匹配ab,acb,adb,acdb,adkfjgjdkb等等。在字符串acbddbeeebff中,有多个字串可以和a*b匹配,包括acb,acbddb和acbddbeeeb。那么应该选哪个呢?通常有两种策略可选,一种是最小匹配,就是选最短的acb;另一种是贪婪匹配,就是选最长的acbddbeeeb。现在就请你写一段程序根据给定模式串和匹配串分别输出最小匹配和贪婪匹配的结果。 提示:java语言可以用Matcher和Pattern类。请给出符合上述要求的java代码
时间: 2024-02-19 22:58:52 浏览: 75
以下是符合要求的 Java 代码,使用 Matcher 和 Pattern 类实现正则表达式的最小匹配和贪婪匹配:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo {
public static void main(String[] args) {
String pattern = "a*b";
String text = "acbddbeeebff";
// 最小匹配
Pattern p1 = Pattern.compile(pattern);
Matcher m1 = p1.matcher(text);
int minStart = text.length(), minEnd = text.length();
while (m1.find()) {
if (m1.start() < minStart) {
minStart = m1.start();
minEnd = m1.end();
}
}
System.out.println("最小匹配结果:" + text.substring(minStart, minEnd));
// 贪婪匹配
Pattern p2 = Pattern.compile(pattern + ".*");
Matcher m2 = p2.matcher(text);
if (m2.find()) {
System.out.println("贪婪匹配结果:" + m2.group());
}
}
}
```
在上述代码中,我们首先定义了一个模式串和一个匹配串。然后分别使用 Pattern 和 Matcher 类创建正则表达式的对象。对于最小匹配,我们遍历所有匹配结果,找到最小起始位置和最小结束位置的子串即可。对于贪婪匹配,我们在模式串后面加上 ".*",表示匹配任意字符(包括空字符)的任意次数,并使用 m2.group() 获取匹配的结果。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)