问题描述
要求是这样的,我想弄一个正则表达式达到双反斜杠(\)合法,单反斜杠()不合法。举个例子:abc123def\ghj。我想这个正则表达式能匹配出第一个d然后提示用户输入错误。但现在我用\[^s"'(\)]后发现他居然把第二个双反斜杠里的最后一个斜杠和后面一个字母匹配出来了,也就是g。很是郁闷,因为按我的要求来说,g前面的双反斜杠应该是合法的。希望我表达清楚了。有没有大神解答下!
解决方案
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());}}
解决方案二:
是不是可以这样,假设匹配的条件为三部分,非斜杠、斜杠、非斜杠。这样就只会匹配一个斜杠了,因此在你的 \[^s"'(\)] 前面再加个非斜杠的判断[^\],这样是否可行?
时间: 2024-08-01 16:10:10