Java匹配器找不到匹配项,即使正则表达式可以单独工作

安娜

我试图获取给定String的“筋急转弯”,并将其作为值放入HashMap中。“筋急转弯”是指在字词边界结尾的子字符串(最大长度为50个字符)。

这是一个代码示例,显示了我如何尝试做到这一点:

import java.util.regex.*;             

public class Test {                    
  public static void main(String[] args) throws Exception {
    final Pattern pattern = Pattern.compile("(^.{0,50}\b)"); 
    final Matcher m = pattern.matcher(
        "This is a long string that I want to find a shorter teaser for."); 
    if (m.find()) {
      System.out.println("Found: " + m.group(1)); 
    } else {  
      System.out.println("No match");   
    }                                                          
  }             
}    

我希望它能打印:

Found: This is a long string that I want to find a

但是,它打印:

No match

如果我单独测试此正则表达式,它会执行应做的工作-它会找到一个值的子字符串,该字符串的最大长度为50个字符,并以单词边界结尾。但是,如果我对其进行调试,则m.find总是会给我一个错误。

任何想法如何解决这个问题?(我专注于获取预告片,而不是使用Matcher.find();-))

亚当

根据Oracle文档中有关Characters的说明, \ b是字符串中退格的转义序列。但是,您希望\ b用作单词边界的正则表达式,因此您需要将斜杠更改为文字斜杠,即\\,以便Pattern.compile看到\ b

Pattern.compile("(^.{0,50}\\b)")

您可以通过在String上调用.toCharArray()来看到此效果。

单斜杠

System.out.println(Arrays.toString("\b".toCharArray()));
=> []

双斜线

System.out.println(Arrays.toString("\\b".toCharArray()));
=> [\, b]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java正则表达式找不到匹配项

来自分类Dev

android正则表达式找不到匹配器

来自分类Dev

正则表达式代码找不到匹配项

来自分类Dev

找不到与Java Matcher匹配的正则表达式

来自分类Dev

Java正则表达式,IllegalStateException:找不到匹配项

来自分类Dev

Java正则表达式匹配器未找到所有可能的匹配项

来自分类Dev

Java正则表达式匹配器未找到所有可能的匹配项

来自分类Dev

是正则表达式匹配器

来自分类Dev

正则表达式匹配器

来自分类Dev

正则表达式匹配,如果找不到空间

来自分类Dev

替换正则表达式,直到找不到匹配项

来自分类Dev

正则表达式找不到两个匹配项

来自分类Dev

在简单的正则表达式中找不到匹配项

来自分类Dev

如果在函数中定义了正则表达式,则找不到匹配项

来自分类Dev

替换正则表达式,直到找不到匹配项

来自分类Dev

为什么我的正则表达式找不到任何匹配项?

来自分类Dev

在行中找到模式时找不到匹配项的Java正则表达式抛出异常

来自分类Dev

Java正则表达式匹配器-多个组

来自分类Dev

Java正则表达式边界匹配器

来自分类Dev

正则表达式在Ruby 1.8.7中找不到匹配项,但在1.9.2中却找到了匹配项

来自分类Dev

“mm-dd-yy”日期格式的正则表达式在python中找不到任何匹配项

来自分类Dev

Java正则表达式匹配

来自分类Dev

Java正则表达式匹配

来自分类Dev

\W 匹配器 vs 空格?正则表达式

来自分类Dev

Bash:将正则表达式匹配项写入单独的文件

来自分类Dev

Bash:将正则表达式匹配项写入单独的文件

来自分类Dev

正则表达式模式在匹配器上无法正常工作

来自分类Dev

HttpSecurity 正则表达式匹配器未按预期工作

来自分类Dev

仅当找不到重复行时才匹配的正则表达式

Related 相关文章

  1. 1

    Java正则表达式找不到匹配项

  2. 2

    android正则表达式找不到匹配器

  3. 3

    正则表达式代码找不到匹配项

  4. 4

    找不到与Java Matcher匹配的正则表达式

  5. 5

    Java正则表达式,IllegalStateException:找不到匹配项

  6. 6

    Java正则表达式匹配器未找到所有可能的匹配项

  7. 7

    Java正则表达式匹配器未找到所有可能的匹配项

  8. 8

    是正则表达式匹配器

  9. 9

    正则表达式匹配器

  10. 10

    正则表达式匹配,如果找不到空间

  11. 11

    替换正则表达式,直到找不到匹配项

  12. 12

    正则表达式找不到两个匹配项

  13. 13

    在简单的正则表达式中找不到匹配项

  14. 14

    如果在函数中定义了正则表达式,则找不到匹配项

  15. 15

    替换正则表达式,直到找不到匹配项

  16. 16

    为什么我的正则表达式找不到任何匹配项?

  17. 17

    在行中找到模式时找不到匹配项的Java正则表达式抛出异常

  18. 18

    Java正则表达式匹配器-多个组

  19. 19

    Java正则表达式边界匹配器

  20. 20

    正则表达式在Ruby 1.8.7中找不到匹配项,但在1.9.2中却找到了匹配项

  21. 21

    “mm-dd-yy”日期格式的正则表达式在python中找不到任何匹配项

  22. 22

    Java正则表达式匹配

  23. 23

    Java正则表达式匹配

  24. 24

    \W 匹配器 vs 空格?正则表达式

  25. 25

    Bash:将正则表达式匹配项写入单独的文件

  26. 26

    Bash:将正则表达式匹配项写入单独的文件

  27. 27

    正则表达式模式在匹配器上无法正常工作

  28. 28

    HttpSecurity 正则表达式匹配器未按预期工作

  29. 29

    仅当找不到重复行时才匹配的正则表达式

热门标签

归档