使用简单的java代码提取css属性值

时间:2012-09-07 10:35:39

标签: java regex

请检查以下代码。

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%这样的值。

感谢。

1 个答案:

答案 0 :(得分: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());
}