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

标签 java regex

我使用这段代码来获取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/

相关文章:

javascript - 多个电话号码验证

java - 将 LinkedHashset 内容复制到新的 ArrayList?

使用嵌套循环的 Java Union 数组 2 int 数组

用于 HTML5 输入验证的 Javascript 正则表达式语法

java - 通过正则表达式从字符串中删除文本

正则表达式捕获行首没有空格(flex)

java - 扁平化 Java future

java - 使用 Java 映射访问模式在 Mongo 中进行不同查询

java - JAR 在运行时会在 JAR(本身)内部还是外部查找资源文件?

regex - 使用多个选项检查长度的正则表达式