Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动将Java正则表达式转换为Ruby正则表达式?_Java_Ruby On Rails_Ruby - Fatal编程技术网

自动将Java正则表达式转换为Ruby正则表达式?

自动将Java正则表达式转换为Ruby正则表达式?,java,ruby-on-rails,ruby,Java,Ruby On Rails,Ruby,我使用一个工具,其中大量字符串(存储在数据库中)通过一系列Java正则表达式规则进行转换,以使其更具可读性。为了更容易添加新规则,我需要一个UI,显示哪些字符串将受到建议的正则表达式的影响 我有一个学校项目,其中一个要求是它是用RubyonRails完成的,我正在考虑用它来满足我上述的需求 是否有一个现有的库/gem可以将提议的Java风格的regex转换为Ruby regex(以便查找受影响字符串的代码可以是Ruby) 编辑:我想我没有很好地解释我自己。我正在寻找一个gem,它可以将任何给定的

我使用一个工具,其中大量字符串(存储在数据库中)通过一系列Java正则表达式规则进行转换,以使其更具可读性。为了更容易添加新规则,我需要一个UI,显示哪些字符串将受到建议的正则表达式的影响

我有一个学校项目,其中一个要求是它是用RubyonRails完成的,我正在考虑用它来满足我上述的需求

是否有一个现有的库/gem可以将提议的Java风格的regex转换为Ruby regex(以便查找受影响字符串的代码可以是Ruby)

编辑:我想我没有很好地解释我自己。我正在寻找一个gem,它可以将任何给定的Java正则表达式转换为等价的Ruby正则表达式(当然,在一定范围内)。以下是工作流的一个示例:

  • 用户输入Java正则表达式,
    *[^~]Some.regex[1-9]*
  • java正则表达式字符串被发送到rails服务器
  • rails服务器从数据库返回此正则表达式应用的字符串列表
  • 在寻找完成第三步的方法时,我想知道是否有一个库可以将java regex
    *[^~]Some.regex[1-9]*
    转换为ruby等价物,
    /*[^~]Some.regex[1-9]*/
    (不确定这是否真的是等价物,但只是为了一个示例而使用它)。

    您应该检查一下

    它将允许您根据选择生成正则表达式。然后,您可以选择要在其上使用正则表达式的语言。这将允许您比较Java如何编写表达式和Ruby。这是一个伟大的工具,希望它的主人保持它很长一段时间


    如果我没记错的话,Java正则表达式基本上是字符串,传递给一个方法,该方法将它们传递给正则表达式引擎

    Ruby的正则表达式也不例外。Ruby有几种创建正则表达式的方法,它们都返回相同的对象,尽管它们的定义不同:

    /[^~]Some.Regex[1-9]*/             # => /[^~]Some.Regex[1-9]*/
    %r[[^~]Some.Regex[1-9]*]           # => /[^~]Some.Regex[1-9]*/
    Regexp.new('[^~]Some.Regex[1-9]*') # => /[^~]Some.Regex[1-9]*/
    
    pattern = '[^~]Some.Regex[1-9]*'
    /#{ pattern }/                     # => /[^~]Some.Regex[1-9]*/
    
    这为您提供了一些灵活性,并允许您将字符串替换为正则表达式或将其传递给
    regex.new

    Ruby并没有Java的所有功能,所以您需要注意这些功能。支持非捕获组、前瞻/后看和断言:

    (?:X) X, as a non-capturing group (?idmsux-idmsux) Nothing, but turns match flags i d m s u x on - off (?idmsux-idmsux:X) X, as a non-capturing group with the given flags i d m s u x on - off (?=X) X, via zero-width positive lookahead (?!X) X, via zero-width negative lookahead (?X) X, as an independent, non-capturing group (?:X)X,作为非捕获组 (?idmsux idmsux)无,但将匹配标志i d m s u x打开-关闭 (?idmsux idmsux:X)X,作为具有给定标志i d m s u X开-关的非捕获组 (?=X)X,通过零宽度正向前瞻 (?!X)X,通过零宽度负前瞻 (?X)X,作为一个独立的非捕获组
    我最后制作了一块宝石来支持这一点。提供了支持哪些功能的详细信息。

    您要转换的正则表达式是什么?例子很重要。请记住,写这样的东西不一定是一件小事。