gpt4 book ai didi

java - 正则表达式找不到整个字符串的匹配项

转载 作者:行者123 更新时间:2023-11-29 04:38:26 24 4
gpt4 key购买 nike

我有这个代码

String str = "bla#ff0000bla#000000bla"; // String I want to convert
Pattern pat = Pattern.compile("/#([0-9a-fa-f]{6})/i"); // Regex that matches all hex color codes
Matcher mat = pat.matcher(str); // Find pattern in string
Log.d("Matcher", String.valueOf(mat.matches())); // This returns false

为什么返回false?我想在 mat.find() 之后做一个 while 循环(即使这样也行不通)。我想获得所有十六进制颜色代码并获得它们的位置。 (十六进制代码看起来像 #ff0000、#000000、#FF0000 等)

这个问题看起来很短,但我只得到了这么多。没有错误,没有警告,什么都没有。

最佳答案

  • 您正在使用 Java 的 Javascript 表示法。

    放弃初始 /并替换最后的 /i首字母 (?i) ,或使用 Pattern.CASE_INSENSITIVE旗帜代替。

  • 您的自定义字符类中还有一个十六进制字母的冗余定义。
  • 最后,使用 Matcher#find迭代多个匹配项,而不是将整个输入与 Matcher#matches 匹配.

示例

Pattern pat = Pattern.compile("#([0-9a-f]{6})", Pattern.CASE_INSENSITIVE);
Matcher mat = pat.matcher(str);
while (mat.find()) {
/* TODO something with mat.group()
* with the given input String, you'd get:
* #ff0000
* #000000
*/
}

最后是“必读”文学here .

关于java - 正则表达式找不到整个字符串的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262041/

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