ruby - 匹配ruby中的正则表达式

标签 ruby regex

我有如下字符串

201-Grandview-Dr_Early_TX_76802/50-Washington-St

我正在编写一个正则表达式来匹配这两个字符串。

((/^([0-9]+)-([^_]+)-([A-Za-z]{1,})$/ =~ data ) == 0)

但上面的正则表达式只匹配 50-Washington-St 而不是第二个。

那么这个正则表达式有什么问题呢?

应该匹配的字符串的更新列表:

201-Grandview-Dr_Early_TX_76802
/50-Washington-St
49220-Sunrose-Ln_Palm-Desert_CA_92260
201-Grandview-Dr_Early_TX_76802
50-Washington-St

最佳答案

您可以像这样修复正则表达式

/^\/?([0-9]+)-(.+?)-(\w+)$/

或匹配整个 string(注意 ^ 匹配 line 开头和 $ 行结尾 ruby 正则表达式):

/\A\/?([0-9]+)-(.+?)-(\w+)\z/

参见 Rubular demo

图案细节:

  • \A - 字符串开始
  • \/? - 可选的 /
  • ([0-9]+) - 第 1 组:一个或多个数字
  • - - 连字符
  • (.+?) - 第 2 组:除换行符以外的一个或多个字符
  • - - 连字符
  • (\w+) - 第 3 组:一个或多个单词 ([A-Za-z0-9_]) 个字符
  • \z - 字符串结尾。

关于ruby - 匹配ruby中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627844/

相关文章:

java - 正则表达式来验证字符串

Javascript 正则表达式仅允许 2 位数字和 3 位数字以逗号分隔

regex - Laravel 模式验证管道字符问题

python - 与命名组关联的模式

javascript - 在 Rails 应用程序中使用 AJAX 更新模型字段而不使用表单

ruby-on-rails - 在 Ruby 中的私有(private)/公共(public)/ protected 方法之后使 vim 缩进

java赋值正则表达式

ruby - 在 Ruby 中,我需要在类内还是类外?

具有多个变量的 Ruby case 语句

ruby - Ruby 是否提供响应 OS X 上的 Apple 事件的机制?