java - 你能在字符串拆分中使用零宽度匹配正则表达式吗?

标签 java regex split delimiter

System.out.println(
    Arrays.deepToString(
        "abc<def>ghi".split("(?:<)|(?:>)")
    )
);

这会打印出 [abc, def, ghi] , 就好像我在 "<|>" 上 split 了一样.我想让它打印 [abc, <def>, ghi] .有没有办法使用一些正则表达式魔术来完成我在这里想要的东西?


也许是一个更简单的例子:

System.out.println(
    Arrays.deepToString(
        "Hello! Oh my!! Good bye!!".split("(?:!+)")
    )
);

这会打印出 [Hello, Oh my, Good bye] .我想让它打印 [Hello!, Oh my!!, Good bye!!] . `.

最佳答案

你需要看看零宽度匹配结构:

(?=X)   X, via zero-width positive lookahead
(?!X)   X, via zero-width negative lookahead
(?<=X)  X, via zero-width positive lookbehind
(?<!X)  X, via zero-width negative lookbehind

关于java - 你能在字符串拆分中使用零宽度匹配正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2406633/

相关文章:

java - android中如何判断点击了哪个动态按钮?

regex - bash 脚本正则表达式匹配

Python 使用正则表达式解析 HTML

Mysql 将有序列表拆分为多行

javascript - 在 JavaScript 中第 n 次出现正则表达式时分割字符串

java - Android 蓝牙连接 - 服务发现失败

java - 使用 log4j2 和 mockito 断言日志消息

java - 如何分配对象而不将它们保存在变量中?

regex - 在 scikit-learn CountVectorizer 中使用 nltk 正则表达式示例

c# - 相当于 c# 中的 vbCrLf