鉴于此字符串
"www.monkeysports.com%2Fcontent%2F123.json"
我正在尝试匹配除了最后一个“.json”部分之外的所有内容。换句话说,我想要一个将执行以下操作的正则表达式:
sum_regex.match("www.monkeysports.com%2Fcontent%2F123.json")
=> "www.monkeysports.com%2Fcontent%2F123"
仅使用正则表达式可以实现吗?
答案 0 :(得分:5)
"www.monkeysports.com%2Fcontent%2F123.json".chomp( ".json" )
#> "www.monkeysports.com%2Fcontent%2F123"
答案 1 :(得分:1)
试试这个:
t = 'www.monkeysports.com%2Fcontent%2F123.json'
t.match( /^(.*)\.json$/ )[1]
答案 2 :(得分:0)
您可以使用只是测试的前瞻,而不是最终结果的一部分:
sum_regex.match("www\.monkeysports\.com%2Fcontent%2F123(?=\.json\z)")
(?=...)
先行断言(即后续)
\z
字符串锚的结尾
注意:不要忘记逃避特殊角色的点。
答案 3 :(得分:0)
诀窍是告诉正则表达式引擎选择你想要的东西,并排除你不想要的东西:
"www.monkeysports.com%2Fcontent%2F123.json"[/^(.+)\.json/, 1] # => "www.monkeysports.com%2Fcontent%2F123"
这是因为: