我有如下字符串
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/