如何在Ruby中找到字符串中特殊字符之间的文本值?

时间:2012-04-25 21:46:11

标签: ruby regex

Ruby的新手,

file_path = "/.../datasources/xml/data.txt"

如何找到最后两个正斜杠之间的值?在这种情况下,该值为'xml'...我不能使用绝对定位,因为'/'的数量会随着文本的变化而变化,但我需要的值总是在最后两个之间/

我只能找到有关如何在字符串中查找特定单词的示例,但在这种情况下,我不知道该单词的值,因此这些示例没有帮助。

2 个答案:

答案 0 :(得分:2)

file_path.split("/").fetch(-2)

你说你确定它总是在最后两个斜线之间。这会将您的字符串拆分为斜杠上的数组,然后获取第二个最后一个元素。

"/.../datasources/xml/data.txt".split("/").fetch(-2) => "xml" 

答案 1 :(得分:0)

如果你有Ruby 1.9或更高版本:

if subject =~ 
    /(?<=\/) # Assert that previous character is a slash
    [^\/]*   # Match any number of characters except slashes
    (?=      # Assert that the following text can be matched from here:
     \/      #  a slash,
     [^\/]*  #  followed by any number of characters except slashes
     \Z      # and the end of the string
    )        # End of lookahead assertion
    /x
    match = $&