我在下面有这个字符串:
foob/site?article=foo-title&id=12
如何使用正则表达式从上面的字符串中获取foo-title
?
我们将不胜感激。
注意:foo-title
可以是任何标题。
答案 0 :(得分:1)
这种模式可行:
(?<=article=)[^&]++(?=&)
(?<=article=)
“article =”[^&]++
匹配所有不是“&amp;”,所有权(?=&)
“&amp;”这是一个例子是Java:
public static void main(String[] args) {
final String s = "foob/site?article=foo-title&id=12";
final Pattern p = Pattern.compile("(?<=article=)[^&]++(?=&)");
final Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
}
答案 1 :(得分:1)
我相信Java支持积极的外观,所以你可以使用:
(?<=article=)[^&]+
答案 2 :(得分:0)
不确定Javascript是否适合您,但以下是您在大多数其他正则表达式平台中的操作方式:
var s = 'foob/site?article=foo-title&id=12';
r = s.replace(/^[^=]+=([^&]+).*$/, '$1');
//=> foo-title
更新:根据您的评论,这里是Java代码:
String r = "oob/site?article=foo-title&id=12".replaceAll("^[^=]+=([^&]+).*$", "$1");
//=> foo-title
答案 3 :(得分:0)
以下正则表达式应该:
article=([^&]+)&
标题将分配给组1. Java中的示例用法:
Pattern p = Pattern.compile("article=([^&]+)&");
Matcher m = p.matcher("foob/site?article=foo-title&id=12");
if (m.find()) {
String title = m.group(1);
// process the title
}
答案 4 :(得分:0)
这应该有效:
"article=(.*?)&"