这是我的字符串:
<link href="/post?page=4&tags=example" rel="last" title="Last Page">
从那里我尝试使用这个正则表达式从4
参数中获取page
:
link href="/post?page=(.*?)&tags=(.*?)" rel="last"
然后我会收集第一组中的4个,tags参数有一个通配符,因为内容可以更改。但是,我似乎没有与此匹配,任何人都可以帮忙吗?
而且我知道我不应该使用正则表达式来解析HTML,但这只是一件小事而且为此导入一个巨大的模块将是一种浪费。
答案 0 :(得分:3)
假设您使用的是/regex literal/
,则需要将/
中的\/
转义为href
。
或者,它取决于你如何获得这个字符串。它是真的以这种方式打字,还是你正在读出的innerHTML的一部分?如果是这种情况,那么innerHTML就不会像你期望的那样,因为浏览器会“标准化”它。
如果它是innerHTML,那么获取标记要容易得多,然后获取标记的{{1}}属性,然后是正则表达式。
答案 1 :(得分:1)
我认为将捕获组更改为稍微不同的东西可能会更好,但会将所有内容捕获到终止字符:
link href="/post?page=([^&]+)&tags=([^\"]+)" rel="last"
首先在字符组中使用否定字符告诉正则表达式引擎“捕获除此处列出的字符之外的所有字符”。这使得捕获所有内容变得非常容易,直到它达到终止字符,例如amperstand和double-quote。假设您正在使用PHP或Java,这也应该略微提高正则表达式的性能。
答案 2 :(得分:1)
link href="/post\?page=(.*?)&tags=(.*?)" rel="last"
你在?
答案 3 :(得分:0)
如果page
参数始终排在第一位,请尝试PCRE /\?page=(\d+)/
。匹配组1将包含页码。