使用正则表达式拆分字符串但在匹配数组中保留分隔符
只是找不到这个答案。 这是一个示例字符串:
"some@domain.com"
我想生成一个像这样的匹配数组:
["some", "@", "domain", ".", "com"]
我一直在使用以下正则表达式来分割字符串:
"([@\\.])"
但是,结果如下:
["some", "domain", "com"]
相同的正则表达式适用于Javascript和C#,但不适用于Java。 谁知道这个正确的正则表达式?
你可以这样做:
"some@domain.com".split("(?=[@.])|(?<=[@.])");
这使用环视在分隔符之前或之后拆分空字符串 。
同样,如果您希望将分隔符附加到前一个元素,则可以使用look-behind 。 如果您希望将分隔符预先添加到下一个元素,则可以使用前瞻 。 上述正则表达式是这两种情况的组合,因此将分隔符保持为单独的元素。
"some@domain.com".split("(?=[@.])"); // ["some", "@domain", ".com"] "some@domain.com".split("(?<=[@.])"); // ["some@", "domain.", "com"]
- UnsatisfiedLinkError:java.library.path中没有opencv_java249
- 将JAXB生成的类用于需要带有模式的整数的元素
- 缺少cxf.xml? 在maven中失败,在Eclipse中工作
- 2D Java游戏。 在平铺图像上方移动精灵
- Recursion vs For循环 – Factorials,Java
- 如何在JTextArea中包装文本
- 如何在Java中使用JSONata?
- java.io.IOException:服务器返回HTTP响应代码:503为URL:http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
- 使用JFreeChart中的JTextField更新正态分布图