以下正则表达式有什么作用?

时间:2012-05-25 14:26:12

标签: regex

以下正则表达式做了什么?

[\w+\-.]+

上述正则表达式的输出,\ w + - 。+和\ w + \ - 。+是一样的,但我不明白为什么?

测试字符串

sadkfj-dslk.sdjklf!sdljf

你能解释一下吗?

3 个答案:

答案 0 :(得分:3)

这是相同的,因为反斜杠是多余的;当它不表示有效字符范围(即-不是字符范围)时,您实际上不需要转义+-.,因为它将被视为文字破折号无论如何,无论如何。

给定的正则表达式会查找以下任意一个或多个字符:\w(单词字符),+(加号),-(短划线)或{{1 (句)。由于不需要.之前的反斜杠,无论是否包含它都没有区别。

答案 1 :(得分:2)

在方括号内,连字符具有特殊含义(“范围”),因此字面连字符应转义为\-。但是,根据您的特定正则表达式引擎,您可能会使用未转义的语法,因为在这种特殊情况下,没有歧义。

(例如,Perl将接受这两个版本并产生预期结果,但是use warnings;它会抱怨缺少反斜杠。)

答案 2 :(得分:1)

这匹配一个'单词字符'[0-9a-zA-Z_](\ w匹配单词字符),或者一个+字符,或一个连字符(\转义 - ),或者一个完整的句点,其中所有的这不止一次重复。

这意味着它将匹配包含正常字母,下划线,加号​​,连字符或句号的任何字符串,前提是没有空格。简而言之 - 在我看来,这是一个从URL中识别字符串以查找数据库条目的函数。

没有区别因为逃避 - 没有必要,因为没有字符匹配“+ to。”,所以逃脱或未转义,它没有区别。