Java 如何在另一个文本中间匹配模式?
我想使用java正则表达式从给定的URL获取一个数字 问题是模式应该出现在URL的中间。 我怎样才能修改我的正则表达式Java 如何在另一个文本中间匹配模式?,java,regex,string,Java,Regex,String,我想使用java正则表达式从给定的URL获取一个数字 问题是模式应该出现在URL的中间。 我怎样才能修改我的正则表达式 Pattern p = Pattern.compile("[.w]*/pins/[.d]+/edit"); Matcher m = p.matcher("https://mysite.com/providers/271/pins/4997/edit"); while (m.find()) { String id = m.group(); } 如果您希望匹配4997,并
Pattern p = Pattern.compile("[.w]*/pins/[.d]+/edit");
Matcher m = p.matcher("https://mysite.com/providers/271/pins/4997/edit");
while (m.find()) {
String id = m.group();
}
如果您希望匹配
4997
,并且在模式中没有任何限制来验证URL
(无论如何不应该使用regex完成),那么您可以使用基于“lookarounds”的简单解决方案:
如果您希望匹配4997
,并且在模式中没有任何限制来验证URL
(无论如何不应该使用regex完成),那么您可以使用基于“lookarounds”的简单解决方案:
如果要捕获管脚之间的数字并进行编辑,请尝试下面的正则表达式
(?<=pins\/)(\d+)(?=\/edit)
如果要捕获管脚之间的数字并进行编辑,请尝试下面的正则表达式
(?<=pins\/)(\d+)(?=\/edit)
尝试pins/(\d+)/edit$
,只需对正则表达式模式做一些小的更改
此处,$
表示行尾,括号()
用于对管脚和编辑内匹配的数字进行分组
示例代码:
Pattern p = Pattern.compile("pins/(\\d+)/edit$");
Matcher m = p.matcher("https://mysite.com/providers/271/pins/4997/edit");
if (m.find()) {
String id = m.group(1);
System.out.println(id); // 4997
}
String str = "https://mysite.com/providers/271/pins/4997/edit";
String[] arr = str.split("/");
System.out.println(arr[arr.length - 2]); // 4997
您也可以使用String#split()
方法
示例代码:
Pattern p = Pattern.compile("pins/(\\d+)/edit$");
Matcher m = p.matcher("https://mysite.com/providers/271/pins/4997/edit");
if (m.find()) {
String id = m.group(1);
System.out.println(id); // 4997
}
String str = "https://mysite.com/providers/271/pins/4997/edit";
String[] arr = str.split("/");
System.out.println(arr[arr.length - 2]); // 4997
尝试pins/(\d+)/edit$
,对正则表达式模式进行轻微更改
此处,$
表示行尾,括号()
用于对管脚和编辑内匹配的数字进行分组
示例代码:
Pattern p = Pattern.compile("pins/(\\d+)/edit$");
Matcher m = p.matcher("https://mysite.com/providers/271/pins/4997/edit");
if (m.find()) {
String id = m.group(1);
System.out.println(id); // 4997
}
String str = "https://mysite.com/providers/271/pins/4997/edit";
String[] arr = str.split("/");
System.out.println(arr[arr.length - 2]); // 4997
您也可以使用String#split()
方法
示例代码:
Pattern p = Pattern.compile("pins/(\\d+)/edit$");
Matcher m = p.matcher("https://mysite.com/providers/271/pins/4997/edit");
if (m.find()) {
String id = m.group(1);
System.out.println(id); // 4997
}
String str = "https://mysite.com/providers/271/pins/4997/edit";
String[] arr = str.split("/");
System.out.println(arr[arr.length - 2]); // 4997
附近失踪的抓捕小组\\d@JEY不完全是。另请参见注释。周围缺少捕获组\\d@JEY不完全是。另请参见注释。/
在Java正则表达式中并不特殊,您不需要逃避它,这意味着您可能不应该避免混淆人们(尤其是那些不熟悉Java正则表达式的人)./
在Java正则表达式中并不特殊,您不需要逃避它,这意味着您可能不应该避免混淆人们(尤其是那些刚接触Java正则表达式的人)。