gpt4 book ai didi

第一行 < 和 "!"的 Java 正则表达式

转载 作者:行者123 更新时间:2023-12-02 00:28:19 25 4
gpt4 key购买 nike

我使用这段代码来获取html源代码和我想要的信息。我只是测试它是否会返回我<和“!”对于第一行。但是,这行不通!

    import java.io.*;
import java.net.URL;
import java.util.regex.*;

public class url
{
public static BufferedReader read(String url) throws Exception {
return new BufferedReader(
new InputStreamReader(
new URL(url).openStream()));
}

public static void main (String[] args) throws Exception{
BufferedReader reader = read(args[0]);
String line = reader.readLine();

while(line != null) {
System.out.println(line);
line = reader.readLine();
regex("//<//!",line);
}
}

public static void regex(String regex, String check){
Pattern checkregex =Pattern.compile(regex);
Matcher regexMatcher = checkregex.matcher(check);
if(regexMatcher.find()==false)
return;

while(regexMatcher.find()){
if(regexMatcher.group().length() !=0) {
System.out.println(regexMatcher.group().trim());
}
}
}
}

最佳答案

那是因为你混淆了反斜杠\带正斜杠 / 。前者用于转义特殊字符。所以,改变这个:

                regex("//<//!",line);

对此:

                regex("\\<\\!",line);

也就是说,<!实际上在这种情况下没有任何特殊含义,所以你可以这样写:

                regex("<!",line);

如果你愿意的话。

另外,请注意上面的正则表达式匹配两个字符的子字符串 <! 。你的问题让我觉得你可能实际上想要匹配单字符子字符串 <!分别地?如果是这样,您可以使用 ...|...用于指定多个替代模式的语法:

                regex("<|!",line);   // matches whatever matches < or matches !

[...]指定字符类的语法:

                regex("[<!]",line);  // matches a character that is either < or !

(在这种情况下,这两种语法是等效的)。

关于第一行 < 和 "!"的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com