有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Bash中的正则表达式Java格式

我要检查大量正则表达式,它们以Java/JavaScript正则表达式格式输出,如图所示:

\d{7}|\d{8}
[a-zA-Z]\d{8}
[a-zA-Z]\d{3}-\d{3}-\d{2}-\d{3}\d[0|1]

鉴于我对Bash很满意,但是有一些小技巧我可能从来没有想到过,我想知道是否有一种方法可以使用测试字符串对这个特定的RegEx格式进行评估

我已经尝试了许多grep,并使用我知道通过RegEx测试程序传递的数据进行评估,例如http://www.cyber-reality.com/regexy.html

在使用bash正则表达式时,我可以正确地计算这些字符串,但是我无法将服务器输出这些字符串的方式更改为我知道如何在bash中计算的格式

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    我建议编写一个执行检查的命令行工具。然后可以从bash脚本调用此工具

    使用this starting point,这里有一些东西可以满足您的需要:

    import java.io.Console;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    
    public class RegexTestHarness {
        public static void main(String[] args) {
            try{
                Pattern pattern = Pattern.compile(args[1]);
                Matcher matcher = pattern.matcher(args[2]);
    
                boolean found = false;
                while (matcher.find()) {
                    System.out.println(matcher.group() + ", position " + matcher.start() + ":" + matcher.end() + "\n");
                    found = true;
                }
                if (!found) {
                    System.out.println("\nNo match found.");
                    System.exit(1);
                }
            }
            catch (Exception e) {
                System.out.println("\nCaught an exception. Description: " + e.getMessage());
                System.exit(2);
            }
        }
    }
    

    要检查是否存在匹配项,可以使用以下脚本:

    #!/bin/bash
    if java RegexTestHarness "my_regex" "my_input_string"; then
        echo "Expression matches"
    else
        echo "Expression doesn't match"
    fi
    

    要检查特定结果,可以捕获命令的输出并在脚本中处理它