如何使用正则表达式从URL中获取一个单词之后的数字

时间:2014-01-24 21:50:51

标签: java regex

我有一个网址,其中我有NotificationId=2418,我需要提取这个数字,显然任何事情都可以在之前和之后。拉出NotificationId我可以做但我怎么能拉出这个号码?我正在使用Java。

2 个答案:

答案 0 :(得分:2)

你可以使用这种模式:

NotificationId=([0-9]+)

然后提取第一个捕获组的内容。

其他方法:使用lookbehind:

(?<=NotificationId=)[0-9]+

lookbehind (?<=...)是零宽度断言,意味着后跟

答案 1 :(得分:1)

详细说明@ CasimiretHippolyte的答案和Java-fy它,这里有一些你可以使用的代码:

import org.junit.Test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static org.junit.Assert.assertEquals;

public class SandboxTest {

    @Test
    public void testGroups() {
        assertEquals("2418", method("NotificationId=2418"));
    }

    private String method(String s) {
        Pattern compile = Pattern.compile("NotificationId=(\\d+)");
        Matcher matcher = compile.matcher(s);
        if (matcher.matches()) {
            return matcher.group(1);
        } else {
            throw new RuntimeException("No match found");
        }
    }


}