我正在尝试从 P‡GUID / CT-14-A2F2 / SU-14-1F939 中提取 14-A2F (匹配/
)或 P‡GUID / CT-14-A2F2 (在行尾匹配)
final Pattern pattern = Pattern.compile("CT-[a-zA-Z0-9-\\-]+(/|\\z)");
final Matcher matcher = pattern.matcher("P‡GUID/CT-14-A2F2/SU-14-1F939");
matcher.find();
matcher.group();
到目前为止没有成功,我的模式有问题吗,或者这不是matcher.group的用例
答案 0 :(得分:1)
尝试使用正则表达式:(?<=CT-)[a-zA-Z0-9-\\]+(?=\/|$)
答案 1 :(得分:1)
在正则表达式CT-[a-zA-Z0-9-\\-]+(/|\\z)
中,您匹配CT-[a-zA-Z0-9-\\-]+
,然后对最后一部分使用捕获组,在这种情况下,它将捕获正斜杠。如果您使用matcher.group();
,则会得到完整的匹配,CT-14-A2F2/
您可以将捕获组移到第一部分,然后在代码中引用第一个捕获组:
在Java中:
CT-([a-zA-Z0-9-\\-]+)(?:/|\\z)
final Pattern pattern = Pattern.compile("CT-([a-zA-Z0-9-\\-]+)(?:/|\\z)");
final Matcher matcher = pattern.matcher("P‡GUID/CT-14-A2F2/SU-14-1F939");
matcher.find();
System.out.println(matcher.group(1)); // 14-A2F2
答案 2 :(得分:0)
此正则表达式将匹配两个正斜杠之间的所有内容。 从括号中删除该组。
/([^/]*)/
您不需要转义正斜杠