作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有这样的 URI 字符串(etc
可以是任意长度):
/7/ipsum/dolor/etc
/2/not/17/ipsum/etc
这是我想要实现的目标:在正斜杠上拆分字符串,取第二个和第三个匹配项(["ipsum", "dolor"]
和 ["not ", "17"]
), 如果不是数字则丢弃第二个元素。期望的结果是 ["ipsum"]
和 ["not", "17"]
。
我用普通的 ruby 实现了这个(通过将字符串拆分成一个数组,然后检查所需值的值)。使用正则表达式是否有更好的方法?
最佳答案
这是一个可能的实现,带有一个扩展的、记录在案的正则表达式。
def extract_parts_from(path)
pattern = %r{
^/[^/]+ # don't capture the first element
/([^/]+) # always capture the second element
/(?:(\d+)/)? # capture the third element if it's made up of digits
}x
path.match(pattern)[1,2].compact
end
测试:
["/7/ipsum/dolor/etc", "/2/not/17/ipsum/etc"]. each do |p|
p extract_parts_from(p)
end
结果:
["ipsum"]
["not", "17"]
关于ruby - 用于从 URI 中提取字符串和数字的条件正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762847/
我是一名优秀的程序员,十分优秀!