为什么此模式与我的URL中的端口不匹配?
public class PatternTest {
private Pattern PORT_STRING_PATTERN = Pattern.compile(":\\d+/");
private boolean hasPort(String url) {
return PORT_STRING_PATTERN.matcher(url).matches();
}
@Test
public void testUrlHasPort() {
assertTrue("does not have port", hasPort("http://www.google.com:80/"));
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将模式更改为Pattern.compile("^.+:\\d+/")匹配.我为什么需要^.+?
Jon*_*eet 14
问题是你正在使用Matcher.matches(),记录为:
尝试将整个区域与模式匹配.
您不希望匹配整个区域 - 您只想在该区域内找到匹配项.
我想你可能想要打电话find():
尝试查找与模式匹配的输入序列的下一个子序列.
此方法从此匹配器区域的开头开始,或者,如果方法的先前调用成功并且匹配器尚未重置,则在第一个与上一个匹配不匹配的字符处开始.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |