【发布时间】:2012-06-22 22:30:49
【问题描述】:
我正在尝试制作两个匹配 URI 的正则表达式。这些 URI 的格式为:/foo/someVariableData 和 /foo/someVariableData/bar/someOtherVariableData
我需要两个正则表达式。每个都需要匹配一个而不是另一个。
我最初想出的正则表达式是:
分别为/foo/.+ 和/foo/.+/bar/.+。
我认为第二个正则表达式很好。它只会匹配第二个字符串。然而,第一个正则表达式匹配两者。所以,我开始(第一次)用消极的前瞻来玩。我设计了正则表达式/foo/.+(?!bar) 并设置了以下代码来测试它
public static void main(String[] args) {
String shouldWork = "/foo/abc123doremi";
String shouldntWork = "/foo/abc123doremi/bar/def456fasola";
String regex = "/foo/.+(?!bar)";
System.out.println("ShouldWork: " + shouldWork.matches(regex));
System.out.println("ShouldntWork: " + shouldntWork.matches(regex));
}
当然,它们都解析为true。
有人知道我做错了什么吗?我不一定需要使用 Negative lookahead,我只需要解决问题,并且我认为 Negative lookahead 可能是一种方法。
谢谢,
【问题讨论】:
标签: java regex negative-lookahead regex-lookarounds