当前位置: 首页 > 面试题库 >

Java String.replaceAll()引用最新找到的组

蓝逸仙
2023-03-14
问题内容

Javadoc说$ 1,$ 2等可以用来引用匹配组,但是使用时如何引用替换字符串中最新找到的组String.replaceAll()呢?

即有一个字符串"aaabbbaa"和一个正则表达式"a+",我希望能够做类似s.replaceAll("a+", "$\n")get的事情"aaa\nbbbaa\n",但是Java给了我Illegal group reference


问题答案:

s.replaceAll("(a+)", "$1\n") 应该管用:

jshell> String s = "aaabbbaa"
s ==> "aaabbbaa"

jshell> s.replaceAll("(a+)", "$1\n")
$2 ==> "aaa\nbbbaa\n"

正如注释中已经指出的那样,您必须在正则表达式中标记捕获组。这就是括号的(...)作用。然后,您必须使用来引用该捕获组$1,这是第一个捕获组。$0将是整个比赛(也在注释中指出),但$将无法正常工作。



 类似资料:
  • 我试图在N大小的数组的k个元素中找到最小和次最小的元素(没有排序和最小/最大堆)。 使用传统的方法,首先从第< code>0个元素开始,在第< code>k个元素中找到最小的和第二小的元素,然后将起始点移动< code>1并重复该过程。但是它的复杂度是< code>O(Nk)。如果可能,我需要一个复杂度为< code>O(N)的解决方案。对此有什么建议吗? 在Jubobs的注释后编辑:例如,如果s

  • 问题内容: 我刚刚升级到RequireJS 2.1.1-我正在加载一个AngularJS应用。在主定义运行之前,我从角度获取了“ No module:app”。 它在RequireJS 2.0.1上运行良好。知道可能会发生什么变化吗? 这是public / index.html 这是public / main.coffee 问题答案: 在这种情况下,您应该手动引导angular并删除ng-app属

  • 问题内容: Java语言规范在17.5节中定义了final字段的语义: 最终字段的使用模型很简单。在该对象的构造函数中设置该对象的最终字段。不要在对象的构造函数完成之前,在另一个线程可以看到它的地方编写对正在构造的对象的引用。如果执行此操作,则当另一个线程看到该对象时,该线程将始终看到该对象的最终字段的正确构造版本。它还将查看那些最终字段引用的任何对象或数组的版本,这些版本至少与最终字段一样。 我

  • 我写了测试自动化脚本为Android使用selenium和AppiumJava作为编码语言。脚本在Android 6模拟器上工作得非常好。但是,在Android 7模拟器上,驱动程序启动应用程序,但无法找到应用程序上的任何元素。 示例代码: 其中android.widget.TextView是类名,文本属性包含作为文本的设备。 当我运行这个时,它在驱动程序处失败。findElement步骤并抛出N

  • 本文向大家介绍如何找到R中向量的最小值和最大值的索引?,包括了如何找到R中向量的最小值和最大值的索引?的使用技巧和注意事项,需要的朋友参考一下 在分析项目中进行数据探索时,有时我们需要找到一些值的索引,主要是最小值和最大值的索引,以检查相应的数据行是否包含一些关键信息,或者我们可能会忽略它。此外,如果我们不想忽略它们,有时会根据数据特征将这些值转换为另一个值。 示例