gpt4 book ai didi

regex - 如何仅在 Scala 中小写捕获组

转载 作者:行者123 更新时间:2023-12-05 02:19:01 27 4
gpt4 key购买 nike

这段代码:

"""{"nAMe": "Deloise", "WINS": [["three of a kind", "5♣"]]}""".replaceAll("""(\"[^"]+\" *:)""", "|UPERCASETEST|$1|".toLowerCase())

产生:

String = {|upercasetest|"nAMe":| "Deloise", |upercasetest|"WINS":| [["three of a kind", "5♣"]]}

当我期待的时候:

String = {|upercasetest|"name":| "Deloise", |upercasetest|"wins":| [["three of a kind", "5♣"]]}

关于捕获组为什么不希望小写以及如何解决它的任何想法?

最佳答案

您需要将匹配对象传递给 replaceAllIn 中的 lambda 表达式,您可以在其中操作内容,否则,在 replaceAll 中,$1 不会“扩展”到实际的第 1 组子匹配值:

val s = """{"nAMe": "Deloise", "WINS": [["three of a kind", "5♣"]]}"""
val rx = """(\"[^"]+\" *:)""".r
val replacedStr = rx replaceAllIn (s, m => s"|UPERCASETEST|${m.group(1)}|".toLowerCase())
println(replacedStr)

参见 Scala demo

输出:

{|upercasetest|"name":| "Deloise", |upercasetest|"wins":| [["three of a kind", "5♣"]]}

关于regex - 如何仅在 Scala 中小写捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43655273/

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