java - 如何改进这个 Java 正则表达式?

标签 java android regex

我有三种格式的文本:

  1. 但 3:52-56
  2. 使徒行传 6:8-10、7:54-59
  3. 2 撒母耳记 15:13-30, 16:5-13

理想情况下,我希望能够提取所有,例如Dan,3、52 和 56 在任何情况下,我目前有:

/(\S*)\s(\d*):(\d*)-(\d*)($|,\s(\d*):(\d*)-(\d*))/gmix

..它有效,但不能很好地捕获第二种情况。有没有更好/更有效的方法来做到这一点?

最佳答案

试试这个:((?:\d*\s)?(?:\S*))\s(\d*):(\d*)-(\d*)(? :,\s(\d*):(\d*)-(\d*))? 或作为 java 字符串:"((?:\\d*\\s) ?(?:\\S*))\\s(\\d*):(\\d*)-(\\d*)(?:,\\s(\\d*):(\\d*)-(\\d*))?”

好的,刚刚编辑,所以“2 Sam”将在同一组中

注意:但是,执行此操作的最佳方法是了解输入字符串中每个元素的确切规范(如果可能),而不是仅使用 3 种可能性。

关于java - 如何改进这个 Java 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516470/

相关文章:

用于 NFC 读取器/写入器的 Android 库/API

regex - 为什么这个 grep 命令不排除图像?

regex - 如何使用正则表达式匹配单个空格而不仅仅是单个空格

java - 内部 bean 创建的 Spring 顺序

android - android中的应用程序可以取决于智能手机的类型吗?

java - 如何在java中使用digester读取命名空间前缀

android - 在 Android 上使用自己的推特身份验证

regex - 使用 SED 将字符串附加到现有文本行?

java - 私有(private)内部类的继承

java - 从 Python 调用 java 程序(带参数)并将结果返回给 Python