java正则表达式,求匹配:双反斜杠(\\)合法,单反斜杠不合法(\)

要求是这样的,我想弄一个正则表达式达到双反斜杠(\)合法,单反斜杠()不合法。举个例子:abc123\def\ghj。我想这个正则表达式能匹配出第一个\d然后提示用户输入错误。但现在我用\[^\s"'(\)]后发现他居然把第二个双反斜杠里的最后一个斜杠和后面一个字母匹配出来了,也就是\g。很是郁闷,因为按我的要求来说,g前面的双反斜杠应该是合法的。希望我表达清楚了。有没有大神解答下!

2个回答

[code="java"]
public static void main(String[] args) {
String str = "\abc123\def\\ghj\";
Pattern pattern = Pattern.compile("(^|[^\\])\\([^\\]|$)");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
[/code]

aladdin_2008
aladdin_2008 谢谢!解决了!
6 年多之前 回复

是不是可以这样,假设匹配的条件为三部分,非斜杠、斜杠、非斜杠。这样就只会匹配一个斜杠了,因此在你的 \[^\s"'(\)] 前面再加个非斜杠的判断[^\],这样是否可行?

aladdin_2008
aladdin_2008 兄弟,你的这个思路是正确的,谢谢!楼上的那个答案更完整些,不过还是谢谢你!
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问