一段较为复杂正则表达式求问

"\\s*((//.*)|([0-9]+)|(\"(\\\\\"|\\\\\\\\|\\\\n|[^\"])*\")"
          + "|[A-Z_a-z][A-Z_a-z0-9]*|==|<=|>=|&&|\\|\\||\\p{Punct})?";

这段正则||\\p{Punct}中||之间为什么可以没有东西,匹配空格吗?(\\\\\"|\\\\\\\\|\\\\n|[^\"])这个括号里的东西能匹配啥,我觉得是‘\"’或者'\\'或者‘\n’或者'"'对吗?

哈哈,这个。。。。

  1. 两条竖线那里不能||\\p{Punct}这样拆,要这样拆:\\|\\|,代表的意思是匹配||,和前面的结合在一起==|<=|>=|&&|\\|\\|,表示匹配==<=>=&&||,竖线进行了转义,\\|表示一条竖线。
  2. 刚刚查了一下,\\p{Punct}匹配标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  3. (\\\\\"|\\\\\\\\|\\\\n|[^\"])匹配\"\\\n或除了"之外的所有字符。

前面的一竖是转义的,不是正则里的或,而是匹配文本中的或,这代码是用来解析类似C语言的程序代码的。