用于组合正则表达式的Java API

时间:2014-12-23 01:17:29

标签: java regex

我正在编写一个需要在运行时定义和编译模式的应用程序。使用Java Pattern API,我需要传递一个字符串并获得一个模式。像这样:

Pattern.compile("ab*|c*");

问题是我的模式是模块化的,我想用替代的克莱恩星等组成它们,例如:

Char a = new Char('a');
Char b = new Char('b');
Char c = new Char('c');
Regex r = new Regex(new Alt(new Seq(a, new KleeneStar(b)), new KleeneStar(c)));
Pattern.compile(r);

我还没有在JDK中找到一个API来允许我这样的事情。我认为是潜在的 模式的实现应该有这样的API。有没有人知道如何从中获得这样的API 标准的Java,还是有第三方库?

最后,我想我可以自己创建一个这样的API,其中有一些递归访问者可以打印出来 字符串,但如果已经退出则会很好。

2 个答案:

答案 0 :(得分:0)

VerbalExpressions看起来就像你所描述的那样。 ab*|c*会表达为:

VerbalExpression.regex()
        .then("a").then("b").zeroOrMore()
        .or("c").zeroOrMore()
        .build()

它也存在in different languages

答案 1 :(得分:0)

尝试http://itsallbinary.com/project-simply-regex/

https://github.com/itsallbinary/simply-regex

代码示例:

    var myarray = new Array();
$.ajax({
    url: "/member/CheckUser",
    type: "POST",
    success: function(data){
        var myarray = $.parseJSON(data);
        array = myarray.result;
        myarray = array.split(',');
    },
    error: function (xhr, ajaxOptions, thrownError) {
        //alert(xhr.status);
        alert(thrownError);
    },
    //dataType:"json"
});

$(".tab").each(function(){
    if(jQuery.inArray($(this).attr('id'), myarray) !== -1){
        var id = $(this).attr('id');
        $('#'+id).removeClass('tab');
        $('#'+id).hide();
    }
});