Bash中Java格式的正则表达式
我要检查大量正则表达式,它们以Java/JavaScript正则表达式格式输出,如图所示:Bash中Java格式的正则表达式,java,regex,bash,Java,Regex,Bash,我要检查大量正则表达式,它们以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测试程序传递的数据进行评估 在使用bash正则表达式时,我可以正确地计算这些字符串,
\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测试程序传递的数据进行评估
在使用bash正则表达式时,我可以正确地计算这些字符串,但是我无法将服务器输出这些字符串的方式更改为我知道如何在bash中计算的格式
有什么想法吗?我建议编写一个执行检查的命令行工具。然后可以从bash脚本调用此工具 使用,这里有一些东西可以满足您的需要:
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
要检查特定结果,您可以捕获命令的输出并在脚本中进行处理。我建议编写一个执行检查的命令行工具。然后可以从bash脚本调用此工具 使用,这里有一些东西可以满足您的需要:
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
要检查特定结果,您可以捕获命令的输出并在脚本中处理它。使用bash的regex很难做到。作为一个快速测试,我将使用Gnu grep和-P选项(Perl regexp)。然而,这只有在您遇到Java的regexp所特有的东西时才会起作用@Sir_Athos方法是处理Java所做的一切的唯一方法。是的,当然,我的想法有点牵强,我正在寻找一个快速解决问题的方法(这总是一个坏主意)。我将使用他的解决方案,因为这样可以避免我编写解释器。用bash的正则表达式很难做到。作为一个快速测试,我将使用Gnu grep和-P选项(Perl regexp)。然而,这只有在您遇到Java的regexp所特有的东西时才会起作用@Sir_Athos方法是处理Java所做的一切的唯一方法。是的,当然,我的想法有点牵强,我正在寻找一个快速解决问题的方法(这总是一个坏主意)。我同意他的解决方案,因为这样可以避免我写口译员。谢谢。我将采用类似的方法。我尝试了一个相当牵强的想法,并使它在我脑海中变得比实际更简单。谢谢谢谢我将采用类似的方法。我尝试了一个相当牵强的想法,并使它在我脑海中变得比实际更简单。谢谢