["aa-", "-bb"] "aa-yyyy-bb" -6ren">
gpt4 book ai didi

java - 当分割字符恰好出现两次时分割字符串

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

我的目标是在所有出现的“yy”后面或前面都没有另一个字母“y”的地方分割字符串(使用Java或Scala)。示例:

"aa-yy-bb" -> ["aa-", "-bb"]
"aa-yyyy-bb" -> ["aa-yyyy-bb"]
"yyy-bb" -> ["yyy-bb"]
"yy-bb" -> ["","-bb"]
"aa-yy-bb-yy" -> ["aa-","-bb-",""]

我最终得到了 mystring.split("(^|[^y])yy([^y]|$)", -1) 但这个解决方案是无效的,因为它会丢弃任何相邻字符,例如,它输出 "aa-yy-bb"-> ["aa", "bb"]

当然,这种分割可以通过手动解析来解决,但我想知道是否存在(优雅的)模式匹配解决方案。你能找到一些吗?

最佳答案

Lookarounds就是为此而设计的

Regex101

(?<!y)yy(?!y)
<小时/>
  • (?<!y)负向回顾
  • yy逐字匹配字符 yy(区分大小写)
  • (?!y)负向前瞻

关于java - 当分割字符恰好出现两次时分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150704/

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