java正则表达式",(?=[^\"]+?\",|[^\"]+?\"$)

请问一下这个正则表达式是什么意思呢能仔细说明一下吗谢谢

我举例说明:
x(?=y)
▲表示:右边紧跟y的x,但只包含x,不包含y
x(?=y|z)
▲表示:右边紧跟y或z的x,但只包含x,不包含y或z
x(?!y)
▲表示:右边不跟y的x,只包含x

你的这个正则表达式完全正确:
,(?=[^\"]+?\",|[^\"]+?\"$)
▲它只匹配1个,
▲▲但条件是:
▲条件1▲:此,右边到第1个",之间有至少1个不是"的字符
▲条件2▲:此,右边到结尾的"之间有至少1个不是"的字符

举例说明:
它匹配下面3行中的前2个,
(每次匹配1个,而不是同时匹配前2个)
x,y,z",
x,y,,",
x,y,z,"

你要匹配这样的空格,只需把此式中的首个,换成空格即可:
(?=[^\"]+?\",|[^\"]+?\"$)
▲这可以处理你举的例子。

如果情况更复杂,请再举例,我继续帮你。追问

那么如果要匹配回车的话是把此式中的首个,换成\n吗?

追答

如果要匹配的回车符合上述条件,当然可以用。

如果不行,请举例。

追问

我改成String a= line.replaceAll("\n(?=[^\"]+?\",|[^\"]+?\"$)", "#");
这样运行以后没有效果啊?
直接改成\n是没有错的吧?

追答

Java中要用\\n

另外,换行符的情况比较复杂:

一个换行可能由2种字符组成,分3种情况,你可能需要用(\\r?\\n|\\r)

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-20
\" 表示 : "

[^\"]表示: 除了 " 以外的任意字符
+ 表示:一次或多次
$ 表示正则表达式的结尾标志

| 表示 或
? 表示 有1个或没有追问

所以整一句是什么意思啊请问?

追答

有点我想问下你 ,你要匹配的正则是啥? 你写的很乱,能把完整写出来啊

追问

整句是这个样子的
String s2= s1.replaceAll(",(?=[^\"]+?\",|[^\"]+?\"$)", "_");
是把引号里面的逗号都替换成_的意思吗?
如果想写把引号里面的空格替换成_应该怎么改呢?

追答

你确定你写的正则表达式是你要匹配的么? 这正则有错误唉

明显的 $符号是结尾的标志

追问

可以运行没有错啊?请问是哪里错了呢?
那请问一下如果想写把引号引起来的字符串里面的空格替换成_应该怎么写正则表达式呢?
就比如这样的一行
s1="1,“2 3 3 3",2";
变成
s2="1,“2_3_3_3",2";

追答

这个就用字符串替换就可以了,不需要用正则
String s2= s1.replaceAll(" ", "_");
问题解决了没?

追问

不是的,因为只想取代引号里面的空格,不想取代其他字符串里面的空格
例如
s1="a b,"1 2 3",c d";
变成
s2="a b,"1_2_3",c d";
所以要用正则
请问要怎么做呢?

追答

String s1 = "a b,\"1 2 3\",c d";
int start = s1.indexOf("\"");
int end = s1.lastIndexOf("\"");
//System.out.println(start);
//System.out.println(end);
String subStr = s1.substring(start, end+1);
subStr = subStr.trim().replace(" ", "_");
String s2 = s1.substring(0,start)+subStr+s1.substring(end+1);
System.out.println(s2);
我是用字符串拼接的,仅供参考

第2个回答  2013-11-21

楼主给个字符串让我验证一下!还有就是,如果想吧空格全部换成_的话,试试下面的正则:

var a ="dsad sdsa sad saa sad sd ad sa as as da asd   sasdsda a ";
var reg = /\s/g;
var str = a.replace(reg,"_");

谢谢!以上是js的写法!如果你是写java的话,下面这样

String s2= s1.replaceAll("\s", "_");

第3个回答  2013-11-20
写一段用引号开头,并用引号结尾,中间包括一些字符和逗号的文本来试验一下它找到了什么匹配内容。

java正则表达式",(?=[^\\"]+?\\",|[^\\"]+?\\"$)
▲表示:右边紧跟y的x,但只包含x,不包含y x(?=y|z)▲表示:右边紧跟y或z的x,但只包含x,不包含y或z x(?!y)▲表示:右边不跟y的x,只包含x 你的这个正则表达式完全正确:,(?=[^\\"]+?\\",|[^\\"]+?\\"$)▲它只匹配1个,▲▲但条件是:▲条件1▲:此,右边到第1个",之间有至...

JAVA中的正则表达式“\\\\[([^\\\\]]+)\\\\]”这个表示什么意思?两个转义字符...
在正则中括号表示字符集,要表示中括号字符必须转义 整个正则匹配 中括号中的内容 开头的\\\\[ 匹配" [ "字符 尾部的\\\\]匹配 “]"字符 中间的[([^\\\\]]+),表示所有非"]"字符组成的字符串

java中怎么用正则表达式表示数字,包括整数,小数等
java表示整数和小数的正则表达式 ^[+-]?\\\\d+(\\\\.\\\\d+)?$。正则表达式 正则表达式,又称规则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行...

正则表达式 !\\\\^\\\\.\\\\*\\\\$!([^!]+)! 是什么意思
在java中要进行转义,所以转化成标准正则表达式后就是“ !\\^\\.\\*\\$!([^!]+)!”正则表达式中\\^ 表示就是^的本身的意思,\\. \\$ ,同理得知;所以最后你的表达式表示!^.$! 开头后面跟任意非!的字符串重复一次到无穷次,然后以!结束。例如:1321312!^.$! 123!123123。如果想让字符串只能...

Java的正则表达式"^([\\\\d\\\\.\\\\s]+)\\\\s*(.+)\\\\s+[\\\\d\\\\s]+$" 对应如果...
参考:在VBA里面使用正则表达式,需要调用vbscript.regexp对象,正则表达式基本上差不多。如你上面的正则表达式如果在VBA里面使用的话:Dim regEx As Object Set regEx = CreateObject("vbscript.regexp")With regEx .Global = True .IgnoreCase = True .Pattern = "^([\\\\d\\\\.\\\\s]+)\\\\s*(.+)\\...

求java编写的各类中文时间识别的正则表达式
匹配中文字符的正则表达式: [\一-\龥]匹配双字节字符(包括汉字在内):[^\\x00-\\xff]匹配空行的正则表达式:\\n[\\s| ]*\\r 匹配HTML标记的正则表达式:\/<(.*)>.*<\\\/>|<(.*) \\\/>\/ 匹配首尾空格的正则表达式:(^\\s*)|(\\s*$)匹配Email地址的正则表达式:\\w+([-+.]\\w+)*@\\...

.jpg 在java中用正则表达式如何表示呢
一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){returnthis.replace(\/[^\\x00-\\xff]\/g,"aa").length;} 匹配空行的正则表达式:\\n[\\s| ]*\\r 匹配html标签的正则表达式:<(.*)>(.*)<\\\/(.*)>|<(.*)\\\/> 匹配首尾空格的正则表达式:(^\\s*)|(\\s*$)...

java 正则表达式 (.+?)怎样理解?举个例子详细说明。
正则表达式的符号理解吗,* ? + 其中*代表的是0-无穷个个,比如\/^w*$\/,代表有0个或多个数字或字母 ?代表是0-1个,比如\/^d*$\/,代表最多只有一个数字,也可能没有 +代表有1-无穷个,比如\/^d+$\/,代表最少有一个数字 .代表的是换行符之外的任意字符,它代表的字符,不是个数...

java中正则表达式中的^和$有什么用,给我举个例,谢谢大神们
比如有正则表达式如下:"\\d+"和"^\\d+"那么字符串"a123456789"匹配第一个正则表达式是能匹配通过的,但是第二个就不行 ^符号在正则表达式第一位出现表示的是强匹配开头,也就是必须是\\d+开头的字符串才能匹配通过,中间一部分符合\\d+规则的匹配不通过,$同理,是强结束匹配用的 ...

高级Java开发中什么是正则表达式?
Java 正则表达式 正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。Java正则表达式和Perl的是最为相似的。java.util.regex包主要包括以下三个类:Pattern类:pattern对象是一个正则表达式的编译表示。Pattern类没有公共...

相似回答