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

问题描述

要求是这样的,我想弄一个正则表达式达到双反斜杠(\)合法,单反斜杠()不合法。举个例子: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

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

java 正则表达式-JAVA正则表达式无法匹配

问题描述 JAVA正则表达式无法匹配 不知道怎么贴图.用JAVA正则表达式匹配的,为什么在系统程序里find()出来一直就是false.然而直接写个类,用相同的正则,相同的匹配条件,就能够正常的匹配出来.请问这个是什么情况?? 解决方案 我自己查了一下,是在解析正则字符串的时候,这个转义字符没有给我解析.所以现在的问题是,它为什么没有给我解析??

学习Java正则表达式(匹配、替换、查找)_java

本文为大家分享了Java正则表达式的匹配.替换.查找和切割操作,有兴趣的朋友可以参考一下 import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { getStrings(); //用正则表达式获取指定字符串内容中的指定内容 System.out.pri

java正则表达式匹配斜杠

在正则表达式里面匹配一个斜杠,需要用4个斜杠: Java代码 import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String textString = new String ("\\\&q

求一个java中正则表达式,匹配所有标点符号,但除去‘-’和‘_’的

问题描述 求一个java中正则表达式,匹配所有标点符号,但除去'-'和'_'的 解决方案 可以使用正则表达式:(?=\pP)[^-_]测试:String ss = "测试test.df/:'-_";System.out.println(ss.replaceAll("(?=\pP)[^-_]", ""));输出:测试testdf-_解释:(1)前面部分(?=\pP)是个顺序环视正则表达式,只匹配位置不占用字符,匹配的位置是一个标点符号.(2)匹配到

求在字符串中匹配中文数字组合的java正则表达式

问题描述 求一个在字符串中识别 中文和数字组合的子串 的java方法,如用正则表达式来匹配.如何匹配? 中文和数字组合的子串 子串格式为:1.中文个数 为 3-6个字. 2.数字 可以固定在1-4位, 正则为d{1,4}. 3."号"字如"小镇100号""大街101号" 这种形式 输入为 1个字符串 s="我在小镇100号"; 输出为 result = "小镇100号"; 输入为 1个字符串 s="

关于 java 正则表达式 零宽断言 求回答

问题描述 关于 java 正则表达式 零宽断言 求回答 String= >Symantec bbSEPM码.a>display>"itemcca> regex= (?<=>).*?a> 问:能匹配到什么? 我认为是:Symantec bbSEPM码.a> "itemcca> 但结果是:Symantec bbSEPM码.a> "display>"itemcca> 不能理解!求大神!

字符串-java正则表达式匹配数字

问题描述 java正则表达式匹配数字 G3811/ G3885/ G655/l G030/l G3849/ G0150/ G5292/ G955/l G025/l G5300/ 这是控制台输出的字符串,但是我只想要他的数字 怎么匹配 解决方案 Pattern p = Pattern.compile("[0-9]"); Matcher m = p.matcher(elem.attr("abs:href").substring(22, 28)); while (m.fi

java正则表达式匹配问题

问题描述 java正则表达式匹配问题 我现在有一个字符串 String str= "[权利要求 5] 如权利要求 4所述 的墨盒 ,其特征在于 :" 想要提取到第几号权力要求 Pattern p = Pattern.compile("^[权利要求 (d)]"); Matcher m = p.matcher(str); if(m.find()){ System.out.println("["+m.group()+"]"); }

正则表达式 java-关于java正则表达式的问题 急求在线等

问题描述 关于java正则表达式的问题 急求在线等 public class RegexDemo { public static void main(String[] args) { String regex = "[A-Z]+_[A-Z]+{3,10}";//正则表达式 String data = "";//要验证的字符串 System.out.println(data.matches(regex)); } } /*要求格式为大写字母_大写字母 总长度不能超过10