每当拆分字符恰好出现两次时拆分一个字符串

cub*_*uce 0 java regex split

我的目标是在所有出现的"yy"中分割一个字符串(使用Java或Scala),这些字符串既没有被跟随也没有另一个字母"y".例子:

"aa-yy-bb" -> ["aa-", "-bb"]
"aa-yyyy-bb" -> ["aa-yyyy-bb"]
"yyy-bb" -> ["yyy-bb"]
"yy-bb" -> ["","-bb"]
"aa-yy-bb-yy" -> ["aa-","-bb-",""]
Run Code Online (Sandbox Code Playgroud)

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

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

Yas*_*jaj 5

为此做了一些看法

Regex101

(?<!y)yy(?!y)
Run Code Online (Sandbox Code Playgroud)
  • (?<!y) 负面观察
  • yy yy字面匹配字符(区分大小写)
  • (?!y) 否定前瞻