gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:05:14 26 4
gpt4 key购买 nike

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

我有一个学校项目,其中少数要求之一是它是使用 Ruby on Rails 完成的,我正在考虑使用它来满足我的上述需求。

是否有现有的库/gem 可以将提议的 Java 风格的正则表达式转换为 Ruby 正则表达式(以便找到受影响的字符串的代码可以在 ruby​​ 中)?

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

  1. 用户输入 Java 正则表达式,*[^~]Some.Regex[1-9]*
  2. java正则表达式字符串被发送到rails服务器
  3. Rails 服务器从数据库中返回一个字符串列表,该正则表达式适用于该字符串。

在寻找完成第三步的方法时,我想知道是否有一个库可以将 java regex *[^~]Some.Regex[1-9]* 转换为 ruby等效,/*[^~]Some.Regex[1-9]*/(不确定这是否实际上等效,但只是为了示例而使用它)。

最佳答案

如果我没记错的话,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]*/

这为您提供了一些灵 active ,让您可以将字符串替换为正则表达式或将其传递给 Regex.new

Ruby 没有所有 the flags 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

关于java - 自动将 Java 正则表达式转换为 Ruby 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15400156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com