2011-03-18 132 views
0

我必须匹配超过30个字符的单词,但这些单词不能是网址。正则表达式,不匹配网址

我试图做到这一点,但没有很好地工作:

(?<!ftp)([^\s\t\r\n<>]{30})

+0

首先将只匹配恰好30个字符长 – Max 2011-03-18 20:49:25

+0

被允许在这些“长”的话,你是什么之后字符的单词?信吗?数字?破折号?点?这些词会被空格分隔吗?标签?换行?这,以及一些示例测试数据会有所帮助。 – ridgerunner 2011-03-19 17:00:37

回答

1

我有几点:

  • 您的常规表达式可以与ftp://example.com相匹配,因为您使用的是后视,在第一个视图之前没有看到任何内容 F。请使用预览。
  • 此外,您还需要确保您匹配整个单词,否则您可以将匹配方式转换为URL。
  • \ s包括\ t,\ n等等......所以后者是多余的。
  • 超过30个字符表示31个或更多字符,即{31,}

试试这个:

这一切
(?<![^\s<>])(?!ftp)([^\s<>]{31,})(?![^\s<>]) 
0

试试这个:

\b(?<!ftp://)\w{30,}\b