2011-01-20 46 views

回答

3

這意味着字符串應該包含4到20個單詞字符(字母,數字和下劃線)。這裏:

  • ^(插入符號)匹配正則表達式模式應用到的字符串的開始。匹配一個位置而不是一個字符。大多數正則表達式可以選擇在換行符之後進行插入符匹配(即在文件行的開頭)
  • $(美元)匹配正則表達式模式應用到的字符串末尾。匹配一個位置而不是一個字符。大多數正則表達式風格都有一個選項,可以在換行符之前使美元匹配(即在文件中的行尾)。如果字符串以換行符結尾,也匹配最後一個換行符
  • \w速記匹配單詞字符(字母,數字和下劃線)的字符類。可以在字符類內部和外部使用。
  • {n,m}其中n >= 0m >= n在n次和m次之間重複前一項。貪婪,所以重複m次重複,然後再將重複次數減少到n次

讓我告訴你一個用法示例。比方說,我們有以下內容的文件:

[[email protected] /tmp]$ cat file.txt 
between4and20 
therearetoomanyalphanumcharacters 
foo 
okay 

現在你想只有那些符合模式'/^\w{4,20}$/'哪些字符串:

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

在輸出時,你只看到那些線,滿足您正則表達式。

啊,還有,不要混淆^(尖)與^開幕[後,後者否定字符類,使其匹配字符類中未列出的單個字符。 (指定脫字符是否放置在除[?]之後的任何地方,例如[^a-d]匹配x(除a,b,cd之外的任何字符)。

+0

你能把它分解成什麼意思嗎? – sadojg 2011-01-20 06:15:51

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的巴茲

而且如果正則表達式模式是:

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

那會意味着:匹配應在的端字符串,繼續4-20個字母數字字符

示例(粗體字):Foo barbaz

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