Ruby 匹配捕获的正则表达式
我有一个字符串,它可以是要包含的另一个文件,也可以是带有以下参数的文件:Ruby 匹配捕获的正则表达式,ruby,regex,Ruby,Regex,我有一个字符串,它可以是要包含的另一个文件,也可以是带有以下参数的文件: #include virtual="myfile.html" #include virtual="myfile.html?arg=1" 正则表达式应同时提取文件和参数,例如: m = line.match(/#include virtual=\"(?<vfile>\S+)(?<param>\?+\S+)\"/) unless line.empty? m=line.match(/#include
#include virtual="myfile.html"
#include virtual="myfile.html?arg=1"
正则表达式应同时提取文件和参数,例如:
m = line.match(/#include virtual=\"(?<vfile>\S+)(?<param>\?+\S+)\"/) unless line.empty?
m=line.match(/#include virtual=\”(?\S+(\?++\S+)”/),除非line.empty?
除了上面的代码之外,它只适用于myfile.html?something=1的情况
我遗漏了什么?更新您的模式,在结束锚之前包含延迟搜索和可选的最后捕获组:
/#include virtual=\"(?<vfile>\S+?)(?<param>\?+\S+)?\"/
/#include virtual=\“(?\S+)(?\?++\S+)”/
更新您的模式,在结束锚之前包括延迟搜索和可选的最后捕获组:
/#include virtual=\"(?<vfile>\S+?)(?<param>\?+\S+)?\"/
/#include virtual=\“(?\S+)(?\?++\S+)”/
或者,根据需要
def extract(str)
str[str.index('="')+2..-2].split('?arg=')
end
extract '#include virtual="myfile.html"' #=> ["myfile.html"]
extract '#include virtual="myfile.html?arg=1"' #=> ["myfile.html", "1"]
或者,根据需要
def extract(str)
str[str.index('="')+2..-2].split('?arg=')
end
extract '#include virtual="myfile.html"' #=> ["myfile.html"]
extract '#include virtual="myfile.html?arg=1"' #=> ["myfile.html", "1"]
请为您的示例显示所需的返回值。因为这似乎是一个URL,所以我将在第二步通过
URI('myfile.html?arg=1')提取整个URL并提取查询字符串。query
@Stefan有趣的想法。非常感谢。请为您的示例显示所需的返回值。因为这似乎是一个URL,所以我将在第二步通过URI('myfile.html?arg=1')提取整个URL并提取查询字符串。query
@Stefan有趣的想法。非常感谢。