【发布时间】:2017-09-23 15:08:39
【问题描述】:
我有以下 Java 代码应该从 String 对象中提取 url
public static void main() {
String text = "Link to https://some.domain.com/subfolder?sometext is available";
String regex = "https://some\\.domain\\.com/subfolder[^ ]*";
Pattern urlPattern = Pattern.compile(regex);
Matcher m = urlPattern.matcher(text);
String url = m.group();
System.out.println(url);
return;
}
但是,没有匹配项,代码失败并显示IllegalStateException。
RegEx 有什么问题?
【问题讨论】:
-
字符串正则表达式 = "https:\/\/some\\.domain\\.com/subfolder[^]*";
-
@lordkain 为什么要避开斜线?
-
@lordkain 这是一个非法的转义序列。此外,我还尝试了简单的
https.*也失败了。 -
我认为你不能在不先调用 find 或 matches 方法的情况下使用 'group'。
-
if(m.matches()){ String url = m.group(); System.out.println(url); IllegalStateException - 如果尚未尝试匹配,或者之前的匹配操作失败