wlmnzf
2017-05-26 15:54 阅读 938
已采纳

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    yizishou yizishou 2017-05-27 02:38

    哈哈,这个。。。。

    1. 两条竖线那里不能||\\p{Punct}这样拆,要这样拆:\\|\\|,代表的意思是匹配||,和前面的结合在一起==|<=|>=|&&|\\|\\|,表示匹配==<=>=&&||,竖线进行了转义,\\|表示一条竖线。
    2. 刚刚查了一下,\\p{Punct}匹配标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    3. (\\\\\"|\\\\\\\\|\\\\n|[^\"])匹配\"\\\n或除了"之外的所有字符。
    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-05-26 16:03

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

    点赞 1 评论 复制链接分享

相关推荐