gpt4 book ai didi

java - 用于搜索带有空格和反斜杠性能问题的字符串的正则表达式程序

转载 作者:行者123 更新时间:2023-12-01 14:16:40 25 4
gpt4 key购买 nike

这些是我的文本行:

Region\ name=Provence\ Alpes\ Cote\ d'Azur shops=350,City=Nice 12345
Region\ name=Provence\ Alpes\ Cote\ d'Azur,City=Nice shopsabcdabcdabcdasssss=350 13456
City=Nice,Region\ name=Provence\ Alpes\ Cote\ d'Azur shopsabcdabcdabcdasssss=350 23456

输入:地区\名称
输出:普罗旺斯\阿尔卑斯\科特迪瓦\蔚蓝海岸

输入:城市
输出:很好

下面的解决方案提供了结果:

val data =List("Region\\ name=Provence\\ Alpes\\ Cote\\ d'Azur shops=350,City=Nice"
,"Region\\ name=Provence\\ Alpes\\ Cote\\ d'Azur,City=Nice shopsabcdabcdabcdasssss=350"
,"City=Nice,Region\\ name=Provence\\ Alpes\\ Cote\\ d'Azur shopsabcdabcdabcdasssss=350"
,"City=Nice,Region\\ name =unknown shops=350")
//With that, let's extract all the values where target is the key.
val target = """Region\\ name"""
val pattern =raw"$target\s*=((?:[\w'\\ -]+)+)(?:[ ,]+\w+=|,|$$)".r.unanchored
val output = data.collect{ case pattern(m) => m }

但是当存在像 .r.unanchoredshopsabcdabcdabcdasssss 这样的长字符串时,使用 shopsabcdabcdabcdasssssssssssssssssssssss 提取结果会花费更多时间或挂起。

可以用更好的代码代替吗?已经解决,感谢提供答案

regex101.com/r/nSYxfj/6 ------------>是否可以提取整数值。或者我必须修改一些内容

最佳答案

((?:[\w'\\-]+)+) 模式部分导致 catastrophic backtracking .

你需要使用

Region\\ name\s*=([\w'\\\s-]+)(?:[\s,]+\w+=|,|$)

参见 regex demo .

在 Scala 中,像这样定义模式:

val pattern =raw"$target\s*=([\w'\\\s-]+)(?:[\s,]+\w+=|,|$$)".r.unanchored

关于java - 用于搜索带有空格和反斜杠性能问题的字符串的正则表达式程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63079643/

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