在正则表达式中,\ * *是什么意思?

时间:2009-10-16 08:23:42

标签: python regex syntax

在Python中。 R 1 [\ W *] $

这意味着什么?

6 个答案:

答案 0 :(得分:39)

快速回答:匹配由单个字符组成的字符串,其中该字符是字母数字(字母,数字),下划线(_)或星号(* )。

<强>详细信息:

  • \w”表示“任何单词字符”,通常表示字母数字(字母,数字,不论情况)加下划线(_)
  • ^”“锚定”到字符串的开头,“$”“锚点”到字符串的末尾,这意味着,在这种情况下,匹配必须从字符串的开头开始,然后在字符串的结尾处结束。
  • []表示字符类,表示“匹配字符类中包含的任何字符”。

值得一提的是,字符串的正常引用和转义规则使得输入正则表达式非常困难(所有反斜杠都需要使用额外的反斜杠进行转义),所以在Python中有一个特殊的符号,它有自己的特殊的引用规则,允许正确解释所有反斜杠,这就是开头的“r”。

注意:通常星号(*)表示“之前的0或更多”,但在上面的示例中,它具有意思是,因为星号是里面的字符类,所以它失去了它的“特殊性”。

有关Python中正则表达式的更多信息,两个官方参考文献是re module,正则表达式HOWTO

答案 1 :(得分:2)

正如exhuma所说,\ w是任何字级字符(Jonathan澄清的字母数字)。

但是因为它在方括号中会匹配:

  1. 单个字母数字字符OR
  2. 星号(*)
  3. 所以整个正则表达式匹配:

    • 一个开始 line(^)
    • 接着是a 单个字母数字字符或 星号
    • 接着结束了 line($)

    所以以下内容将匹配:

    blah
    z  <- matches this line
    blah
    

    blah
    * <- matches this line
    blah
    

答案 2 :(得分:0)

从这一行开始,"Any number of word characters (letter, number, underscore)"直到行尾。

我不确定为什么它在方括号中,因为如果你想要返回匹配的文本,圆括号(例如“(”和“)”)是正确的。

答案 3 :(得分:0)

\ w表示0个或更多字母数字字符和下划线。在你的情况下*也在字符类中,所以[\ w *]将匹配所有[a-zA-Z0-9_ *](*按字面解释)

请参阅http://www.regular-expressions.info/reference.html

引用:

  

\ d,\ w和\ s ---匹配数字,单词字符和空格的速记字符类。可以在字符类的内部和外部使用。

修改以更正评论

答案 4 :(得分:0)

如上所述\ w表示任何字眼。所以你可以在下面的上下文中使用它

view.aspx?url=[\w]

表示您可以将任何单词作为“url =”参数

的值

答案 5 :(得分:-1)

\ w相当于[a-zA-Z0-9_]我不明白它之后的*或它周围的[],因为\ w已经是一个类而且类定义中的*没有意义。