正则表达式 – 正则表达式是匹配和替换文本的最佳方式吗?

我很清楚正则表达式是什么,所以请避免给我定义.我只是在寻找意见,甚至可能是一些建议.我很快就读毕业了,获得了计算机科学学位,到目前为止,我接受过正规表达的唯一教育是通过PL设计和开发课程.我们从未接受过关于它在我们编写的程序中的实际应用和使用的教育,只是使用Regex来实际使用编程语言.

我的问题是,我是否正确地假设正则表达式是匹配和处理文本的最强大的工具?如果我错了,还有什么我应该自学(而不是变成正则表达式)?另外,有没有人知道Eclipse IDE的任何好的正则表达式插件(最好是Galileo).我正在寻找能够让我测试文档的东西,并且可能会突出显示正在做的事情.谢谢

最佳答案
这实际上取决于强大是什么意思.

例如,就复杂性而言,RegEx很难处理递归.您需要像JavaCC或YACC这样的编译器编译器(编译器生成)之类的东西来处理它.这就是为什么你不能完全从RegEx轻松创建XML解析器的原因.事情大多数时候RegEx足够复杂.

在性能方面,RegEx无法与直接解析竞争.例如,如果要查看字符串是否以单词“Prefix”开头;在RegEx中,你去’/ ^ Prefix.*/’,但在非RegEx Java中,你去’Str.startsWith(“前缀”)’.两者的速度是无与伦比的.

但是,RegEx允许代码在许多情况下更易于管理.最简单的例子是,如果你想检查字符串是否以至少10个数字开头;在Java中,您可以写:

for(int i = 0; i < Math.min(10, Str.length); i++) {
    char C = Str.charAt(i);
    if ((C < '0') || (C > '0'))
        reutrn false;
}
return true;

与RegEx相比:

static final String CheckRegEx   = "^[0-9]{10,}+"; // So you have it expressed in one place
static final String CheckPattern = Pattern.compile(CheckRegEx);

if (CheckPattern.matches(Str)) {
    // Match
}

RegEx的代码更易于管理.

我想说的是每种技术都有交易,它们必须是平衡的.

对于大多数情况,RegEx是一个非常好的工具,可以用来完成它的工作.

转载注明原文:正则表达式 – 正则表达式是匹配和替换文本的最佳方式吗? - 代码日志