Java 从replaceAll中获取替换的变量
我有一个大的字符串,我想从该字符串的链接。我可以打印链接Java 从replaceAll中获取替换的变量,java,regex,Java,Regex,我有一个大的字符串,我想从该字符串的链接。我可以打印链接 Pattern pattern = Pattern.compile(".*(?<=overlay-link\" href=\").*?(?=\">).*"); Pattern=Pattern.compile(“.*”); 试一试{ Scanner Scanner=新扫描仪(新文件(“sourceCode.txt”); while(scanner.hasNext()){ content=scanner.nextLine();
Pattern pattern = Pattern.compile(".*(?<=overlay-link\" href=\").*?(?=\">).*");
Pattern=Pattern.compile(“.*”);
试一试{
Scanner Scanner=新扫描仪(新文件(“sourceCode.txt”);
while(scanner.hasNext()){
content=scanner.nextLine();
if(pattern.matcher(content.matchers()){
System.out.println(content.replaceAll((?)如果我正确理解了您的问题,您希望只拉出href标记中指定的链接
要做到这一点,您应该在正则表达式本身中使用一个捕获组,而不是尝试替换全部
replaceAll方法准确地查找链接,并将其替换为空字符串,然后根据返回完整的结果字符串,这不是所需的结果
您应该使用的正则表达式如下:*(?不要使用正则表达式来解析XML或HTML。请参阅,但我必须使用正则表达式
<a title="TITLE" class="overlay-link" href="LINK HERE"></a>
EX: <a title="TITLE" class="overlay-link" href=""></a>
String content;
Pattern pattern = Pattern.compile(".*(?<=overlay-link\" href=\").*?(?=\">).*");
try {
Scanner scanner = new Scanner(new File("sourceCode.txt"));
while (scanner.hasNext()) {
content = scanner.nextLine();
if (pattern.matcher(content).matches()) {
System.out.println(content.replaceAll("(?<=overlay-link\" href=\").*?(?=\">)", ""));
}
}
} catch (IOException ex) {
Logger.getLogger(SourceCodeExample.class.getName()).log(Level.SEVERE, null, ex);
}
String line = "This order was placed for QT3000! OK?"; //<a> tag string
Pattern pattern = Pattern.compile("(.*?)(\\d+)(.*)"); //insert regex provided above
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
System.out.println("group 1: " + matcher.group(1)); //This will be your link
System.out.println("group 2: " + matcher.group(2));
System.out.println("group 3: " + matcher.group(3));
}