我很难理解应该如何编写特定的 Java 正则表达式。正则表达式将按顺序使用,并将匹配以/.
问题是使用简单的拆分不起作用,因为 . 之前的文本/可以选择用~. 如果是,那么里面的文本可以匹配任何东西——包括/and ~。这里的关键是结尾~/,如果它以~.
因为正则表达式模式将在序列中使用(即(xxx)+),所以我不能使用^or$进行非贪婪匹配。
示例匹配:
foo/~foo~/~foo/~/~foo~~/~foo/bar~/
还有一些不匹配的:
foo~//~foo~/bar~/~foo/foo~/(见编辑2)
有什么方法可以做到这一点而不会与我的正则表达式重复吗?考虑匹配这个的最佳方式是什么?Java 没有条件修饰符 ( ?),所以我脑子里的事情变得更复杂了。
编辑:在此期间进行此工作后,正则表达式((?:\~())?)(((?!((?!\2)/|\~/)).)+)\1/ 接近但#6 不匹配。
编辑 2:在史蒂夫指出存在歧义之后,很明显 #6 不应该匹配。