以下正则表达式有什么作用?
[\w+\-.]+
上述正则表达式 \w+-.+ 和 \w+\-.+ 的输出是相同的,但我不明白为什么?
测试字符串
sadkfj-dslk.sdjklf!sdljf
你能给我解释一下吗?
以下正则表达式有什么作用?
[\w+\-.]+
上述正则表达式 \w+-.+ 和 \w+\-.+ 的输出是相同的,但我不明白为什么?
测试字符串
sadkfj-dslk.sdjklf!sdljf
你能给我解释一下吗?
也是一样,因为反斜杠是多余的;-
当它不表示有效字符范围(即不是字符范围)时,您实际上不需要转义+-.
,因为无论如何它都会被视为文字破折号。
给定的正则表达式查找以下字符中的一个或多个:(\w
单词字符)、+
(加号)、-
(破折号)或.
(句点)。由于前面的反斜杠-
是不必要的,因此是否包含它都没有区别。
在方括号内,连字符具有特殊含义(“范围”),因此应将文字连字符转义为\-
. 但是,根据您的特定正则表达式引擎,您可能会摆脱未转义的语法,因为在这种特殊情况下没有歧义。
(例如,Perl 将接受这两个版本并产生预期的结果,但use warnings;
它会抱怨缺少反斜杠。)
这匹配一个“单词字符”[0-9a-zA-Z_](\w 匹配单词字符),或一个 + 字符,或一个连字符(\ 转义 -),或一个句号,所有这些都重复不止一次。
这意味着它将匹配任何包含普通字母、下划线、加号、连字符或句号的字母字符串,前提是没有空格。简而言之 - 在我看来,这似乎是一个从 URL 中识别字符串以定位数据库条目的函数。
没有区别,因为不需要转义 - ,因为没有字符匹配“+ to .”,所以转义或未转义,没有区别。