Regex 将句点后的第一个字母大写

Regex 将句点后的第一个字母大写,regex,scala,uppercase,Regex,Scala,Uppercase,我用正则表达式将后面的第一个字母大写。或或但是我不能用大写字母,有什么我遗漏的吗 val reply = line.replaceAll("""([\.!?])\s+([a-z])""","""$1"""+" "+"""$2""".toUpperCase) .toUpperCase无效,因此我尝试了以下方法: val pattern = """(?:(.+)?([\.!?])\s+([a-z])(.+)?)+""".r val reply = line match {

我用正则表达式将后面的第一个字母大写。或或但是我不能用大写字母,有什么我遗漏的吗

val reply = line.replaceAll("""([\.!?])\s+([a-z])""","""$1"""+" "+"""$2""".toUpperCase)
.toUpperCase
无效,因此我尝试了以下方法:

val pattern = """(?:(.+)?([\.!?])\s+([a-z])(.+)?)+""".r

     val reply = line match {
      case pattern(a,b,c,d) => a+b+" "+c.toUpperCase+d
      case _ => line
    }

这与发生的所有事件不匹配。它只在第一个句点后大写字母。

您可以使用
Regex的
replaceAllIn
方法:

scala> """[\.!?]\s+[a-z]""".r.replaceAllIn("abc. abc", _.matched.toUpperCase)
res0: String = abc. Abc

第一个代码不起作用,因为大写字母后的
“$2”
“$2”
(您正在更改regex,而不是单词本身)。好的,但我该怎么做呢?您有一个不起作用的示例行吗?
。matched.toUpperCase
更合适。group(0)。toUpperCase
@nadavwr:fixed。非常感谢。