Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从replaceAll中获取替换的变量_Java_Regex - Fatal编程技术网

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));
}