gpt4 book ai didi

java - 使用java从css中提取十六进制颜色

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:31 25 4
gpt4 key购买 nike

我只是想从一个 css 文件中获取所有十六进制颜色值。十六进制值可以是#fff 或#ffffff 所以这是我为此使用的正则表达式

  • "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
  • "#([a-f0-9]{3}){1,2}/i"
  • "^#[0-9a-zA-F]{3}"

但根本不起作用。

我期待的结果是

#996633 #333 #ccc #969696 ....

但是一无所获,知道我哪里出错了吗?

代码如下:

final String HEX_PATTERN_STRING = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$";
Pattern pattern = Pattern.compile(HEX_PATTERN_STRING);
try {
final URL CSS = new URL("https://maxcdn.bootstrapcdn.com/.../bootstrap.min.css");
URLConnection data = CSS.openConnection();
StringBuilder result = new StringBuilder();
try (BufferedReader in = new BufferedReader(
new InputStreamReader(
data.getInputStream())
)) {
in.lines().forEach(result::append);

Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
System.out.println(matcher.group(0));
}
System.out.println("Done");
}

} catch (IOException ex) {
}

最佳答案

请注意您的模式包含 ^(字符串开头)和 $(字符串结尾) anchor ,需要整个字符串匹配。

您需要删除这些 anchor 。

您也不能使用像 /.../ 这样的正则表达式定界符,因为在 Java 正则表达式中,您可以在模式中将修饰符作为 (?i) 传递,或者在 Pattern.CASE_INSENSITIVE 标记的帮助下(通常使用 Pattern.UNICODE_CASE)。

此外,如果您不仅需要数字,您可以将捕获组变成非捕获组 (?:...)

使用

final String HEX_PATTERN_STRING = "#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})";

关于java - 使用java从css中提取十六进制颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com