0

请检查以下代码。

Pattern pxPattern = Pattern.compile("^.*[0-9]+(%|pt|em).*$");
Matcher pxMatcher = pxPattern.matcher("onehellot455emwohellothree");
System.out.println(pxMatcher.matches());
System.out.println(pxMatcher.group(0));

我想减去字符串 445em。我正在使用代码来检查 CSS。表示我想提取

只是像 45em 或 50% 这样的值。

谢谢。

4

1 回答 1

0

首先,捕获的组在组 1 中,而不是组 0。然后您需要修改正则表达式以不使用数字并将它们包含在组中。尝试:

Pattern pxPattern = Pattern.compile("^.*?([0-9]+(?:%|pt|em)).*$");
Matcher pxMatcher = pxPattern.matcher("onehellot455emwohellothree");
System.out.println(pxMatcher.matches());
System.out.println(pxMatcher.group(1));

编辑:

要从多个字符串中获取所有值,可以使用以下模式:

Pattern pxPattern = Pattern.compile("[0-9]+(?:%|pt|em)");
Matcher pxMatcher = pxPattern.matcher("margin: 0pt, 6em, 5%, 2pt");
List<String> propertyValues = new ArrayList<String>();
while (pxMatcher.find()) {
    propertyValues.add(pxMatcher.group());
}
于 2012-09-07T10:40:23.817 回答