Java 中 REgEx 的问题。在 regex101 网站上测试

问题描述 投票:0回答:1

我有一个无法解决的问题。我正在尝试在 Java 中进行正则表达式匹配。为了开发正则表达式,我使用了 regex101 网站。因此,以下链接显示了开发的正则表达式和内容文本。有两场比赛,那太好了。

https://regex101.com/r/gnRMye/1

所以,当我在 Java 中使用以下正则表达式时:

^Processo\sNº\s[a-zA-Z]{5,9}-[0-9]{7}-[0-9]{2}.[0-9]{4}.[0-9]{1}.[0-9]{2}.[0-9]{4}[^a-zA-Z]

它不起作用。整个Java代码如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidaRegExFileExemplo {

    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("^Processo\sNº\s[a-zA-Z]{5,9}-[0-9]{7}-[0-9]{2}.[0-9]{4}.[0-9]{1}.[0-9]{2}.[0-9]{4}[^a-zA-Z]", Pattern.CASE_INSENSITIVE);
        try {
              File myObj = new File("extrato.txt");
              Scanner myReader = new Scanner(myObj);
              while (myReader.hasNextLine()) {
                String data = myReader.nextLine();
                // procura match na linha carregada em data
                Matcher matcher = pattern.matcher(data);
                boolean matchFound = matcher.find();
                if (matchFound) {
                    System.out.println(data);
                }
              }
              myReader.close();
            } catch (FileNotFoundException e) {
              System.out.println("An error occurred.");
              e.printStackTrace();
            }
    }

}

此代码不返回任何内容。当我使用时:

^Processo\sNº\s[a-zA-Z]{5,9}-[0-9]{7}-[0-9]{2}.[0-9]{4}.[0-9]{1}.[0-9]{2}.[0-9]{4}

返回:

Processo Nº ATOrd-0148400-36.2009.5.02.0041
Processo Nº ATOrd-0076600-43.2003.5.02.0045
Processo Nº ATOrd-0148400-36.2009.5.02.0043Teste

我想要像前两行一样匹配,但不匹配最后一行(Processo N° ATORd-0148400-36.2009.5.02.0043Teste)。

顺便说一句,extrato.txt 中的内容正是 regex101.com 文本中的文本内容。

提前致谢

java regex
1个回答
0
投票

正则表达式中的字符

$
表示匹配字符串或行的结尾。将其添加到正则表达式的末尾,模式后面有多余字符的任何内容都将不再匹配。

© www.soinside.com 2019 - 2024. All rights reserved.