我有一个无法解决的问题。我正在尝试在 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 文本中的文本内容。
提前致谢
正则表达式中的字符
$
表示匹配字符串或行的结尾。将其添加到正则表达式的末尾,模式后面有多余字符的任何内容都将不再匹配。