gpt4 book ai didi

java - 如何使用java正则表达式识别字符的第四次出现

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

我有两个字符串,例如

 aisozp;ak  apso;;   ;pasix acd;XYZ;ao aoz;;  ;aixi o  oiz
aisozp;ak apso;;XYZ;pasix acd;098;ao aoz;; ;XYZ; as oiz

这里我需要将字符串 XYZ 替换为 ABC,仅当它存在于第 5 个和第 6 个分号 (;) 之间时。我尝试了以下方法来实现此目标

 data.replaceAll("(((.*?);){5})XYZ", "$1ABC")

第一个字符串工作正常。但对于第二个字符串,它将替换后面没有第 5 个分号的字符串 XYZ(最后一次出现)。这里如何将搜索限制为 5。我猜上面的正则表达式试图匹配分号 5 及以上的 XYZ。注意:每个分号之间的数据长度是可变的。有人可以帮我解决这个问题吗?

提前致谢。

最佳答案

这是因为 .* 中的 . 匹配任何字符,包括 ;

. 替换为 [^;] 以匹配除 ; 之外的任何字符,并添加 ^ 开头,强制从头开始匹配 String:

data.replaceAll("^((([^;]*?);){5})XYZ", "$1ABC")

关于java - 如何使用java正则表达式识别字符的第四次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25722948/

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