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