正则表达式包括字母数字和_

时间:2014-10-18 17:23:36

标签: python regex

我尝试创建正则表达式以匹配字母数字字符和下划线_。这是我的正则表达式:"\w_*[^-$\s\]"我的印象是这个正则表达式表示任何字母数字字符\w,下划线_,没有-$,或者空白。这是对的吗?

2 个答案:

答案 0 :(得分:4)

正则表达式被读作实际匹配字符串中字符的模式,从左到右,因此您的模式实际上匹配字母数字,然后是下划线(0或更多),那么至少一个字符不是连字符,美元或者是空白。

由于您正在尝试替换字符类型,只需使用字符类来显示您允许的字符:

[\w_]

这会检查字符串的任何部分是否匹配,所以让我们将它锚定到字符串的开头和字符串:

^[\w_]$

现在我们看到字符类缺少量词,所以我们只匹配一个字符。我们可以使用+(如果你想要一个或多个字符,没有空字符串)或*(如果你想允许空字符串)来修复它。我在这里使用+

^[\w_]+$

事实证明,\w字符类已包含下划线,因此我们可以从模式中删除多余的下划线:

^[\w]+$

现在我们在字符类中只有一个字符,所以我们不再需要字符类括号:

^\w+$

这就是你所需要的,除非我遗漏了你的要求。

答案 1 :(得分:2)

,如果没有转义结束括号并且您稍微编辑了正则表达式,那么您是半正确的。令牌\w也匹配下划线,因此您无需重复此字符。你的正则表达式说:

\w         # word characters (a-z, A-Z, 0-9, _)
_*         # '_' (0 or more times)
[^-$\s]    # any character except: '-', '$', whitespace (\n, \r, \t, \f, and " ")

您可以按如下方式编写整个正则表达式以匹配单词字符:

\w+        # word characters ( a-z, A-Z, 0-9, _ ) (1 or more times)

如果要匹配整个字符串,请务必锚定表达式。

^\w+$

说明:

^          # the beginning of the string
 \w+       #   word characters ( a-z, A-Z, 0-9, _ ) (1 or more times)
$          # before an optional \n, and the end of the string