匹配ruby中的正则表达式

rub*_*ist 1 ruby regex

我有如下字符串

201-Grandview-Dr_Early_TX_76802/50-Washington-St

我正在写一个正则表达式匹配两个字符串.

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

但上面的正则表达式只匹配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
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

你可以修复正则表达式

/^\/?([0-9]+)-(.+?)-(\w+)$/
Run Code Online (Sandbox Code Playgroud)

或匹配整个字符串(请注意^匹配Ruby正则表达式中的开头和$行结束):

/\A\/?([0-9]+)-(.+?)-(\w+)\z/
Run Code Online (Sandbox Code Playgroud)

请参阅Rubular演示

图案细节:

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