正则表达式问题

时间:2011-01-20 06:12:56

标签: regex

以下注册代码是什么意思?

'/^\w{4,20}$/'

3 个答案:

答案 0 :(得分:3)

这意味着字符串应包含4到20个单词字符(字母,数字和下划线)。这里:

  • ^(插入符号)匹配应用正则表达式模式的字符串的开头。匹配位置而不是角色。大多数正则表达式都可以选择在换行符后(即文件中一行的开头)使插入符号匹配
  • $(美元)匹配应用正则表达式模式的字符串末尾。匹配位置而不是角色。大多数正则表达式都有一个选项,可以在换行符之前(即在文件中的一行末尾)使美元匹配。如果字符串以换行符结束
  • ,也会在最后一个换行符之前匹配
  • \w匹配单词字符(字母,数字和下划线)的速记字符类。可以在角色类内外使用。
  • {n,m}其中n >= 0m >= n在n和m次之间重复上一项。贪婪,重复m次,然后将重复次数减少到n次

让我向您展示一个用法示例。比如说,我们的文件包含以下内容:

[spongebob@conductor /tmp]$ cat file.txt
between4and20
therearetoomanyalphanumcharacters
foo
okay

现在您只想获得与您的模式'/^\w{4,20}$/'匹配的字符串:

[spongebob@conductor /tmp]$ grep -E '^\w{4,20}$' blah
between4and20
okay

在输出时,您只能看到那些符合正则表达式的行。

啊,同样,不要在开场^之后立即将^(插入符号)与[混淆,后者否定字符类,使其与单个字符不匹配列在角色类中。 (如果放置在开头[)之后的任何位置,则指定插入符号,例如[^a-d]匹配x(除abc或{之外的任何字符{1}})。

答案 1 :(得分:3)

这意味着:

  • ^在开头之间,
  • $和给定字符串的结尾
  • \ w {4,20}应该只有4-20个字母数字字符(如 a,b,c,d,1,2,3 ......等,还有_)

我认为在学习正则表达式时,你会发现Wikipedia's page on Regular Expressions是一个很大的帮助。


就是这样,没有混淆,^$不一定需要彼此, 如果正则表达式是:

'/^\w{4,20}/'

这意味着:匹配应该在字符串的开始,然后是4-20个字母数字字符。

示例(以粗体显示): Foobar baz

如果正则表达式是:

'/\w{4,20}$/'

这意味着:匹配应位于字符串的结束,后跟4-20个字母数字字符

示例(以粗体显示):Foo barbaz

答案 2 :(得分:1)

/ opening delimiter    
    ^ = start of sting
    \w = word character
    {x,y} min max
    $ = end of string 
/end delimiter