正则表达式 - 线跳过
我使用基本的正则表达式分析器https://code.google.com/p/slre/它有一些基本的正则表达式集实现。我想解析HTTP头,它看起来像正则表达式 - 线跳过
GET /3397557/RSVP006_male_468X60_05.swf HTTP/1.1
User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2) Presto/2.12.388 Version/12.10
Host: s0.2mdn.net
我的目的是去“主持人:”我不打扰约的User-Agent:行,让我怎么有跳过user-agent行和招举办: ?我想到目前为止,表达是很没用,
"^\\s*(GET|POST)\\s+(\\S+)\\s+HTTP/(\\d)\\.(\\d)\\s+User-Agent:\\s+.*?\\s+Host:\\s+(\\S+)"
我知道User-Agent:\\s+.*?
不是我们跳过线,但我不知道如何做到这一点,任何帮助吗?
好吧,我不熟悉你的库,但低于工程正则表达式(JavaScript实现)
var str = "GET /3397557/RSVP006_male_468X60_05.swf HTTP/1.1"+
"User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2) Presto/2.12.388 Version/12.10"+
"Host: s0.2mdn.net"
// capture the `Host` value
// has `m` flag to ensure multi-line capturing - not sure if you need to do that with
// your library, or even how to do that
var m = str.match(/Host:\s*(.+)/m)
// get the first captured match, which is the value of the `Host` field
console.log(m[1])
编辑:更仔细的正则表达式
- 添加换行符到字符串(忘了javascript需要明确添加)
- added
start marker
(^
)t他正则表达式的开始,所以当Host:
是在一行
var str = "GET /3397557/RSVP006_male_468X60_05.swf HTTP/1.1\n"+
"User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.8.2) Presto/2.12.388 Version/12.10\n"+
"Host: s0.2mdn.net"
var m
if(m = str.match(/^Host:\s*(.+)/m)) // added `[\r\n]+`
console.log(m[1]) // only if there is a match...
非常好,这个工程。谢谢! – user2085689 2013-02-22 00:51:35
这与头部任何部分的字符串'Host:'匹配,所以如果你想要非常小心,你可能想在开始时添加一些东西,以确保它只匹配一行的开头......我会现在更新答案... – 2013-02-22 01:02:49
谢谢!这有助于。 – user2085689 2013-02-22 02:02:58
我粘贴的头了错位的开始将只匹配,其实每个行会,因为“\ r \ n个新行“ – user2085689 2013-02-22 00:29:05
有一个编辑按钮。 – Piccolo 2013-02-22 00:31:12
'/.*?\bHost:(。*)/ s' - 类似的东西。你需要多行匹配(在我的例子中是's'),那么很简单。 – Madbreaks 2013-02-22 00:33:12