久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

正則表達(dá)大全

 windyan 2015-05-28
$

  匹配行結(jié)束符,。例如正則表達(dá)式weasel$ 能夠匹配字符串"He's a weasel"的末尾,,但是不能匹配字符串"They are a bunch of weasels."。

  ^

  匹配一行的開(kāi)始,。例如正則表達(dá)式^When in能夠匹配字符串"When in the course of human events"的開(kāi)始,,但是不能匹配"What and When in the"。

  *

  匹配0或多個(gè)正好在它之前的那個(gè)字符,。例如正則表達(dá)式.*意味著能夠匹配任意數(shù)量的任何字符,。

  \

  這是引用符,用來(lái)將這里列出的這些元字符當(dāng)作普通的字符來(lái)進(jìn)行匹配,。例如正則表達(dá)式\$被用來(lái)匹配美元符號(hào),,而不是行尾,類似的,正則表達(dá)式\.用來(lái)匹配點(diǎn)字符,,而不是任何字符的通配符,。

  [ ]

  [c1-c2]

  [^c1-c2]

  匹配括號(hào)中的任何一個(gè)字符。例如正則表達(dá)式r[aou]t匹配rat,、rot和rut,,但是不匹配ret??梢栽诶ㄌ?hào)中使用連字符-來(lái)指定字符的區(qū)間,,例如正則表達(dá)式[0-9]可以匹配任何數(shù)字字符;還可以制定多個(gè)區(qū)間,,例如正則表達(dá)式[A-Za-z]可以匹配任何大小寫字母,。另一個(gè)重要的用法是“排除”,要想匹配除了指定區(qū)間之外的字符——也就是所謂的補(bǔ)集——在左邊的括號(hào)和第一個(gè)字符之間使用^字符,,例如正則表達(dá)式[^269A-Z] 將匹配除了2,、6、9和所有大寫字母之外的任何字符,。

  \< \>

  匹配詞(word)的開(kāi)始(\<)和結(jié)束(\>),。例如正則表達(dá)式\<the能夠匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the",。注意:這個(gè)元字符不是所有的軟件都支持的。

  \( \)

  將 \( 和 \) 之間的表達(dá)式定義為“組”(group),,并且將匹配這個(gè)表達(dá)式的字符保存到一個(gè)臨時(shí)區(qū)域(一個(gè)正則表達(dá)式中最多可以保存9個(gè)),,它們可以用 到 的符號(hào)來(lái)引用。

  |

  將兩個(gè)匹配條件進(jìn)行邏輯“或”(Or)運(yùn)算,。例如正則表達(dá)式(him|her) 匹配"it belongs to him"和"it belongs to her",,但是不能匹配"it belongs to them."。注意:這個(gè)元字符不是所有的軟件都支持的,。

  +

  匹配1或多個(gè)正好在它之前的那個(gè)字符,。例如正則表達(dá)式9+匹配9、99,、99,、9999、99999,、……(一個(gè)或一個(gè)以上“9”),。注意:這個(gè)元字符不是所有的軟件都支持的。

  

  匹配0或1個(gè)正好在它之前的那個(gè)字符,。注意:這個(gè)元字符不是所有的軟件都支持的,。

  \{i\}

  \{i,j\}

  匹配指定數(shù)目的字符,這些字符是在它之前的表達(dá)式定義的,。例如正則表達(dá)式A[0-9]\{3\} 能夠匹配字符"A"后面跟著正好3個(gè)數(shù)字字符的串,,例如A123,、A348等,但是不匹配A1234,。而正則表達(dá)式[0-9]\{4,6\} 匹配連續(xù)的任意4個(gè),、5個(gè)或者6個(gè)數(shù)字字符。注意:這個(gè)元字符不是所有的軟件都支持的,。

  最簡(jiǎn)單的元字符是點(diǎn),,它能夠匹配任何單個(gè)字符(注意不包括新行符)。假定有個(gè)文件test.txt包含以下幾行內(nèi)容:

  he is a rat

  he is in a rut

  the food is Rotten

  I like root beer

  我們可以使用grep命令來(lái)測(cè)試我們的正則表達(dá)式,,grep命令使用正則表達(dá)式去嘗試匹配指定文件的每一行,,并將至少有一處匹配表達(dá)式的所有行顯示出來(lái)。命令

  grep r.t test.txt

  在test.txt文件中的每一行中搜索正則表達(dá)式r.t,,并打印輸出匹配的行,。正則表達(dá)式r.t匹配一個(gè)r接著任何一個(gè)字符再接著一個(gè)t。所以它將匹配文件中的rat和rut,,而不能匹配Rotten中的Rot,,因?yàn)檎齽t表達(dá)式是大小寫敏感的。要想同時(shí)匹配大寫和小寫字母,,應(yīng)該使用字符區(qū)間元字符(方括號(hào)),。正則表達(dá)式[Rr]能夠同時(shí)匹配R和r。所以,,要想匹配一個(gè)大寫或者小寫的r接著任何一個(gè)字符再接著一個(gè)t就要使用這個(gè)表達(dá)式:[Rr].t,。

  要想匹配行首的字符要使用抑揚(yáng)字符(^)——又是也被叫做插入符。例如,,想找到text.txt中行首"he"打頭的行,,你可能會(huì)先用簡(jiǎn)單表達(dá)式he,但是這會(huì)匹配第三行的the,,所以要使用正則表達(dá)式^he,,它只匹配在行首出現(xiàn)的h。

  有時(shí)候指定“除了×××都匹配”會(huì)比較容易達(dá)到目的,,當(dāng)抑揚(yáng)字符(^)出現(xiàn)在方括號(hào)中是,,它表示“排除”,例如要匹配he ,,但是排除前面是t or s的情況(也就是the和she),,可以使用:[^st]he。

  可以使用方括號(hào)來(lái)指定多個(gè)字符區(qū)間,。例如正則表達(dá)式[A-Za-z]匹配任何字母,,包括大寫和小寫的;正則表達(dá)式[A-Za-z][A-Za-z]* 匹配一個(gè)字母后面接著0或者多個(gè)字母(大寫或者小寫)。當(dāng)然我們也可以用元字符+做到同樣的事情,,也就是:[A-Za-z]+ ,,和[A-Za-z][A-Za-z]*完全等價(jià)。但是要注意元字符+ 并不是所有支持正則表達(dá)式的程序都支持的,。關(guān)于這一點(diǎn)可以參考后面的正則表達(dá)式語(yǔ)法支持情況,。

  要指定特定數(shù)量的匹配,要使用大括號(hào)(注意必須使用反斜杠來(lái)轉(zhuǎn)義),。想匹配所有100和1000的實(shí)例而排除10和10000,,可以使用:10\{2,3\},這個(gè)正則表達(dá)式匹配數(shù)字1后面跟著2或者3個(gè)0的模式,。在這個(gè)元字符的使用中一個(gè)有用的變化是忽略第二個(gè)數(shù)字,,例如正則表達(dá)式0\{3,\} 將匹配至少3個(gè)連續(xù)的0。

  簡(jiǎn)單的例子

  這里有一些有代表性的,、比較簡(jiǎn)單的例子,。

  vi 命令 作用

  :%s/ */ /g 把一個(gè)或者多個(gè)空格替換為一個(gè)空格。

  :%s/ *$// 去掉行尾的所有空格,。

  :%s/^/ / 在每一行頭上加入一個(gè)空格,。

  :%s/^[0-9][0-9]* // 去掉行首的所有數(shù)字字符。

  :%s/b[aeio]g/bug/g 將所有的bag,、beg,、big和bog改為bug。

  :%s/t\([aou]\)g/h$t/g 將所有tag,、tog和tug分別改為hat,、hot和hug(注意用group的用法和使用引用前面被匹配的字符)。

  中級(jí)的例子(神奇的咒語(yǔ))

  例1

  將所有方法foo(a,b,c)的實(shí)例改為foo(b,a,c),。這里a,、b和c可以是任何提供給方法foo()的參數(shù),。也就是說(shuō)我們要實(shí)現(xiàn)這樣的轉(zhuǎn)換:

  之前 之后

  foo(10,7,2) foo(7,10,2)

  foo(x+13,y-2,10) foo(y-2,x+13,10)

  foo( bar(8), x+y+z, 5) foo( x+y+z, bar(8), 5)

  下面這條替換命令能夠?qū)崿F(xiàn)這一魔法:

  :%s/foo(\([^,]*\),\([^,]*\),\([^)]*\))/foo($2,$1,$3)/g

  現(xiàn)在讓我們把它打散來(lái)加以分析,。寫出這個(gè)表達(dá)式的基本思路是找出foo()和它的括號(hào)中的三個(gè)參數(shù)的位置。第一個(gè)參數(shù)是用這個(gè)表達(dá)式來(lái)識(shí)別的::\([^,]*\),,我們可以從里向外來(lái)分析它:

  [^,] 除了逗號(hào)之外的任何字符

  [^,]* 0或者多個(gè)非逗號(hào)字符

  \([^,]*\) 將這些非逗號(hào)字符標(biāo)記為,,這樣可以在之后的替換模式表達(dá)式中引用它

  \([^,]*\), 我們必須找到0或者多個(gè)非逗號(hào)字符后面跟著一個(gè)逗號(hào),并且非逗號(hào)字符那部分要標(biāo)記出來(lái)以備后用,。

  現(xiàn)在正是指出一個(gè)使用正則表達(dá)式常見(jiàn)錯(cuò)誤的最佳時(shí)機(jī),。為什么我們要使用[^,]*這樣的一個(gè)表達(dá)式,而不是更加簡(jiǎn)單直接的寫法,,例如:.*,,來(lái)匹配第一個(gè)參數(shù)呢?設(shè)想我們使用模式.*來(lái)匹配字符串"10,7,2",它應(yīng)該匹配"10,"還是"10,7,",?為了解決這個(gè)兩義性(ambiguity),,正則表達(dá)式規(guī)定一律按照最長(zhǎng)的串來(lái),在上面的例子中就是"10,7,",,顯然這樣就找出了兩個(gè)參數(shù)而不是我們期望的一個(gè),。所以,我們要使用[^,]*來(lái)強(qiáng)制取出第一個(gè)逗號(hào)之前的部分,。

  這個(gè)表達(dá)式我們已經(jīng)分析到了:foo(\([^,]*\),,這一段可以簡(jiǎn)單的翻譯為“當(dāng)你找到foo(就把其后直到第一個(gè)逗號(hào)之前的部分標(biāo)記為”。然后我們使用同樣的辦法標(biāo)記第二個(gè)參數(shù)為,。對(duì)第三個(gè)參數(shù)的標(biāo)記方法也是一樣,,只是我們要搜索所有的字符直到右括號(hào)。我們并沒(méi)有必要去搜索第三個(gè)參數(shù),,因?yàn)槲覀儾恍枰{(diào)整它的位置,,但是這樣的模式能夠保證我們只去替換那些有三個(gè)參數(shù)的foo()方法調(diào)用,在foo()是一個(gè)重載(overoading)方法時(shí)這種明確的模式往往是比較保險(xiǎn)的,。然后,,在替換部分,我們找到foo()的對(duì)應(yīng)實(shí)例,,然后利用標(biāo)記好的部分進(jìn)行替換,,是的第一和第二個(gè)參數(shù)交換位置。

  例2

  假設(shè)有一個(gè)CSV(comma separated value)文件,,里面有一些我們需要的信息,,但是格式卻有問(wèn)題,目前數(shù)據(jù)的列順序是:姓名,,公司名,,州名縮寫,郵政編碼,,現(xiàn)在我們希望講這些數(shù)據(jù)重新組織,,以便在我們的某個(gè)軟件中使用,需要的格式為:姓名,,州名縮寫-郵政編碼,,公司名。也就是說(shuō),,我們要調(diào)整列順序,,還要合并兩個(gè)列來(lái)構(gòu)成一個(gè)新列。另外,,我們的軟件不能接受逗號(hào)前后面有任何空格(包括空格和制表符)所以我們還必須要去掉逗號(hào)前后的所有空格,。

  這里有幾行我們現(xiàn)在的數(shù)據(jù):

  Bill Jones, HI-TEK Corporation , CA, 95011

  Sharon Lee Smith, Design Works Incorporated, CA, 95012

  B. Amos , Hill Street Cafe, CA, 95013

  Alexander Weatherworth, The Crafts Store, CA, 95014

  ...

  我們希望把它變成這個(gè)樣子:

  Bill Jones,CA 95011,HI-TEK Corporation

  Sharon Lee Smith,CA 95012,Design Works Incorporated

  B. Amos,CA 95013,Hill Street Cafe

  Alexander Weatherworth,CA 95014,The Crafts Store

  ...

  我們將用兩個(gè)正則表達(dá)式來(lái)解決這個(gè)問(wèn)題,。第一個(gè)移動(dòng)列和合并列,第二個(gè)用來(lái)去掉空格,。

  下面就是第一個(gè)替換命令:

  :%s/\([^,]*\),\([^,]*\),\([^,]*\),\(.*\)/, ,/

  這里的方法跟例1基本一樣,,第一個(gè)列(姓名)用這個(gè)表達(dá)式來(lái)匹配:\([^,]*\),即第一個(gè)逗號(hào)之前的所有字符,,而姓名內(nèi)容被用標(biāo)記下來(lái),。公司名和州名縮寫字段用同樣的方法標(biāo)記為和,而最后一個(gè)字段用\(.*\)來(lái)匹配("匹配所有字符直到行末"),。替換部分則引用上面標(biāo)記的那些內(nèi)容來(lái)進(jìn)行構(gòu)造,。

  下面這個(gè)替換命令則用來(lái)去除空格:

  :%s/[ \t]*,[ \t]*/,/g

  我們還是分解來(lái)看:[ \t]匹配空格/制表符,[ \t]* 匹配0或多個(gè)空格/制表符,,[ \t]*,匹配0或多個(gè)空格/制表符后面再加一個(gè)逗號(hào),,最后,[ \t]*,[ \t]*匹配0或多個(gè)空格/制表符接著一個(gè)逗號(hào)再接著0或多個(gè)空格/制表符,。在替換部分,,我們簡(jiǎn)單的我們找到的所有東西替換成一個(gè)逗號(hào)。這里我們使用了結(jié)尾的可選的g參數(shù),,這表示在每行中對(duì)所有匹配的串執(zhí)行替換(而不是缺省的只替換第一個(gè)匹配串),。

  例3

  假設(shè)有一個(gè)多字符的片斷重復(fù)出現(xiàn),例如:

  Billy tried really hard

  Sally tried really really hard

  Timmy tried really really really hard

  Johnny tried really really really really hard

  而你想把"really",、"really really",,以及任意數(shù)量連續(xù)出現(xiàn)的"really"字符串換成一個(gè)簡(jiǎn)單的"very"(simple is good!),那么以下命令:

  :%s/\(really \)\(really \)*/very /

  就會(huì)把上述的文本變成:

  Billy tried very hard

  Sally tried very hard

  Timmy tried very hard

  Johnny tried very hard

  表達(dá)式\(really \)*匹配0或多個(gè)連續(xù)的"really "(注意結(jié)尾有個(gè)空格),,而\(really \)\(really \)* 匹配1個(gè)或多個(gè)連續(xù)的"really "實(shí)例,。

  困難的例子(不可思議的象形文字)

  Coming soon.

  不同工具中的正則表達(dá)式

  OK,你已經(jīng)準(zhǔn)備使用RE(regular expressions,,正則表達(dá)式),,但是你并準(zhǔn)備使用vi。所以,,在這里我們給出一些在其他工具中使用RE的例子,。另外,我還會(huì)總結(jié)一下你在不同程序之間使用RE可能發(fā)現(xiàn)的區(qū)別,。

  當(dāng)然,,你也可以在Visual C++編輯器中使用RE,。選擇Edit->Replace,,然后選擇"Regular expression"選擇框,F(xiàn)ind What輸入框?qū)?yīng)上面介紹的vi命令:%s/pat1/pat2/g中的pat1部分,,而Replace輸入框?qū)?yīng)pat2部分,。但是,,為了得到vi的執(zhí)行范圍和g選項(xiàng),你要使用Replace All或者適當(dāng)?shù)氖止ind Next and Replace(譯者按:知道為啥有人罵微軟弱智了吧,,雖然VC中可以選中一個(gè)范圍的文本,,然后在其中執(zhí)行替換,但是總之不夠vi那么靈活和典雅),。

  sed

  Sed是Stream EDitor的縮寫,,是Unix下常用的基于文件和管道的編輯工具,可以在手冊(cè)中得到關(guān)于sed的詳細(xì)信息,。

  這里是一些有趣的sed腳本,,假定我們正在處理一個(gè)叫做price.txt的文件。注意這些編輯并不會(huì)改變?cè)次募?,sed只是處理源文件的每一行并把結(jié)果顯示在標(biāo)準(zhǔn)輸出中(當(dāng)然很容易使用重定向來(lái)定制):

  sed腳本 描述

  sed 's/^$/d' price.txt 刪除所有空行

  sed 's/^[ \t]*$/d' price.txt 刪除所有只包含空格或者制表符的行

  sed 's/"http://g' price.txt 刪除所有引號(hào)

  awk

  awk是一種編程語(yǔ)言,,可以用來(lái)對(duì)文本數(shù)據(jù)進(jìn)行復(fù)雜的分析和處理??梢栽谑謨?cè)中得到關(guān)于awk的詳細(xì)信息,。這個(gè)古怪的名字是它作者們的姓的縮寫(Aho,Weinberger和Kernighan),。

  在Aho,,Weinberger和Kernighan的書(shū)The AWK Programming Language中有很多很好的awk的例子,請(qǐng)不要讓下面這些微不足道的腳本例子限制你對(duì)awk強(qiáng)大能力的理解,。我們同樣假定我們針對(duì)price.txt文件進(jìn)行處理,,跟sed一樣,awk也只是把結(jié)果顯示在終端上,。

  awk腳本 描述

  awk ' !~ /^$/' price.txt 刪除所有空行

  awk 'NF > 0' price.txt awk中一個(gè)更好的刪除所有空行的辦法

  awk ' ~ /^[JT]/ ' price.txt 打印所有第二個(gè)字段是'J'或者'T'打頭的行中的第三個(gè)字段

  awk ' !~ /[Mm]isc/ {print + }' price.txt 針對(duì)所有第二個(gè)字段不包含'Misc'或者'misc'的行,,打印第3和第4列的和(假定為數(shù)字)

  awk ' !~ /^[0-9]+\.[0-9]*$/ ' price.txt 打印所有第三個(gè)字段不是數(shù)字的行,這里數(shù)字是指d.d或者d這樣的形式,,其中d是0到9的任何數(shù)字

  awk ' ~ /John|Fred/ ' price.txt 如果第二個(gè)字段包含'John'或者'Fred'則打印整行

  grep

  grep是一個(gè)用來(lái)在一個(gè)或者多個(gè)文件或者輸入流中使用RE進(jìn)行查找的程序,。它的name編程語(yǔ)言可以用來(lái)針對(duì)文件和管道進(jìn)行處理??梢栽谑謨?cè)中得到關(guān)于grep的完整信息,。這個(gè)同樣古怪的名字來(lái)源于vi的一個(gè)命令,g/re/p,,意思是global regular expression print,。

  下面的例子中我們假定在文件phone.txt中包含以下的文本,——其格式是姓加一個(gè)逗號(hào),,然后是名,,然后是一個(gè)制表符,然后是電話號(hào)碼:

  Francis, John 5-3871

  Wong, Fred 4-4123

  Jones, Thomas 1-4122

  Salazar, Richard 5-2522

  grep命令 描述

  grep '\t5-...1' phone.txt 把所有電話號(hào)碼以5開(kāi)頭以1結(jié)束的行打印出來(lái),,注意制表符是用\t表示的

  grep '^S[^ ]* R' phone.txt 打印所有姓以S打頭和名以R打頭的行

  grep '^[JW]' phone.txt 打印所有姓開(kāi)頭是J或者W的行

  grep ', ....\t' phone.txt 打印所有姓是4個(gè)字符的行,,注意制表符是用\t表示的

  grep -v '^[JW]' phone.txt 打印所有不以J或者W開(kāi)頭的行

  grep '^[M-Z]' phone.txt 打印所有姓的開(kāi)頭是M到Z之間任一字符的行

  grep '^[M-Z].*[12]' phone.txt 打印所有姓的開(kāi)頭是M到Z之間任一字符,,并且點(diǎn)號(hào)號(hào)碼結(jié)尾是1或者2的行

  egrep

  egrep是grep的一個(gè)擴(kuò)展版本,它在它的正則表達(dá)式中支持更多的元字符,。下面的例子中我們假定在文件phone.txt中包含以下的文本,,——其格式是姓加一個(gè)逗號(hào),然后是名,,然后是一個(gè)制表符,,然后是電話號(hào)碼:

  Francis, John 5-3871

  Wong, Fred 4-4123

  Jones, Thomas 1-4122

  Salazar, Richard 5-2522

  egrep command Description

  egrep '(John|Fred)' phone.txt 打印所有包含名字John或者Fred的行

  egrep 'John|22$|^W' phone.txt 打印所有包含John 或者以22結(jié)束或者以W的行

  egrep 'net(work)?s' report.txt 從report.txt中找到所有包含networks或者nets的行

  正則表達(dá)式語(yǔ)法支持情況

  命令或環(huán)境 . [ ] ^ $ \( \) \{ \} ? + | ( )

  vi X X X X X

  Visual C++ X X X X X

  awk X X X X X X X X

  sed X X X X X X

  Tcl X X X X X X X X X

  ex X X X X X X

  grep X X X X X X

  egrep X X X X X X X X X

  fgrep X X X X X

  perl X X X X X X X X X

  vi替換命令簡(jiǎn)介

  Vi的替換命令:

  :ranges/pat1/pat2/g

  其中

  : 這是Vi的命令執(zhí)行界面。

  range 是命令執(zhí)行范圍的指定,,可以使用百分號(hào)(%)表示所有行,,使用點(diǎn)(.)表示當(dāng)前行,使用美元符號(hào)($)表示最后一行,。你還可以使用行號(hào),,例如10,20表示第10到20行,.,$表示當(dāng)前行到最后一行,,.+2,$-5表示當(dāng)前行后兩行直到全文的倒數(shù)第五行,,等等。

  s 表示其后是一個(gè)替換命令,。

  pat1 這是要查找的一個(gè)正則表達(dá)式,,這篇文章中有一大堆例子。

  pat2 這是希望把匹配串變成的模式的正則表達(dá)式,,這篇文章中有一大堆例子,。

  g 可選標(biāo)志,帶這個(gè)標(biāo)志表示替換將針對(duì)行中每個(gè)匹配的串進(jìn)行,,否則則只替換行中第一個(gè)匹配串,。


五、常用的正則表達(dá)式

  常用的正則表達(dá)式主要有以下幾種:

  匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

  評(píng)注:匹配中文還真是個(gè)頭疼的事,,有了這個(gè)表達(dá)式就好辦了哦

  獲取日期正則表達(dá)式:\d{4}[年|\-|\.]\d{1,2}[月|\-|\.]\d{1,2}日?

  評(píng)注:可用來(lái)匹配大多數(shù)年月日信息,。

  匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

  評(píng)注:可以用來(lái)計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ASCII字符計(jì)1)

  匹配空白行的正則表達(dá)式:\n\s*\r

  評(píng)注:可以用來(lái)刪除空白行

  匹配HTML標(biāo)記的正則表達(dá)式:<(\S*?)[^>]*>.*?</>|<.*? />

  評(píng)注:網(wǎng)上流傳的版本太糟糕,,上面這個(gè)也僅僅能匹配部分,,對(duì)于復(fù)雜的嵌套標(biāo)記依舊無(wú)能為力

  匹配首尾空白字符的正則表達(dá)式:^\s*|\s*$

  評(píng)注:可以用來(lái)刪除行首行尾的空白字符(包括空格、制表符,、換頁(yè)符等等),,非常有用的表達(dá)式

  匹配Email地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

  評(píng)注:表單驗(yàn)證時(shí)很實(shí)用

  匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^\s]*

  評(píng)注:網(wǎng)上流傳的版本功能很有限,上面這個(gè)基本可以滿足需求

  匹配賬號(hào)是否合法(字母開(kāi)頭,,允許5-16字節(jié),,允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

  評(píng)注:表單驗(yàn)證時(shí)很實(shí)用

  匹配國(guó)內(nèi)電話號(hào)碼:\d{4}-\d{7}|\d{3}-\d{8}

  評(píng)注:匹配形式如 0511-4405222 或 021-87888822

  匹配騰訊QQ號(hào):[1-9][0-9]\{4,\}

  評(píng)注:騰訊QQ號(hào)從10000開(kāi)始

  匹配中國(guó)郵政編碼:[1-9]\d(?!\d)

  評(píng)注:中國(guó)郵政編碼為6位數(shù)字

  匹配身份證:\d{17}[\d|X]|\d{15}

  評(píng)注:中國(guó)的身份證為15位或18位

  匹配ip地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。

  評(píng)注:提取ip地址時(shí)有用

  匹配特定數(shù)字:

  ^[1-9]\d*$ //匹配正整數(shù)

  ^-[1-9]\d*$ //匹配負(fù)整數(shù)

  ^-?[1-9]\d*$ //匹配整數(shù)

  ^[1-9]\d*|0$ //匹配非負(fù)整數(shù)(正整數(shù) + 0)

  ^-[1-9]\d*|0$ //匹配非正整數(shù)(負(fù)整數(shù) + 0)

  ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點(diǎn)數(shù)

  ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負(fù)浮點(diǎn)數(shù)

  ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點(diǎn)數(shù)

  ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

  ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

  評(píng)注:處理大量數(shù)據(jù)時(shí)有用,,具體應(yīng)用時(shí)注意修正

  匹配特定字符串:

  ^[A-Za-z]+$ //匹配由26個(gè)英文字母組成的字符串

  ^[A-Z]+$ //匹配由26個(gè)英文字母的大寫組成的字符串

  ^[a-z]+$ //匹配由26個(gè)英文字母的小寫組成的字符串

  ^[A-Za-z0-9]+$ //匹配由數(shù)字和26個(gè)英文字母組成的字符串

  ^\w+$ //匹配由數(shù)字,、26個(gè)英文字母或者下劃線組成的字符串

  評(píng)注:最基本也是最常用的一些表達(dá)式

  Function IsRegu(Regu,s)

  '正則表達(dá)式校驗(yàn)

  If Regu="" Then

  Exit Function

  End if

  Dim Re,Sre

  Set Re = New RegExp

  Re.Pattern = Regu

  Sre = Re.Test(s)

  If Sre = True Then

  IsRegu = True

  Else

  IsRegu = False

  End If

  End Function

  tmp="[email protected]"

  if (IsRegu("\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*",tmp )) =false then

  msgbox "E-mail地址不合法 !"

  FieldCheck#N=false

  end if

  不同的語(yǔ)言(如PHP和JAVA),、相同語(yǔ)言的不同類庫(kù)(如來(lái)自Sun的Java Regular Expression類庫(kù)跟Apache Jakarta的正則表達(dá)式類庫(kù))間,,用法會(huì)有所差別,在使用的時(shí)候,,要注意這些差別,。


六、Editplus等軟件中正則替換技巧

  正則表達(dá)式類

  【1】 正則表達(dá)式應(yīng)用——替換指定內(nèi)容到行尾

  【2】 正則表達(dá)式應(yīng)用——數(shù)字替換----------------------------Microshaoft@CCF,jiuk2k@CCF

  【3】 正則表達(dá)式應(yīng)用——?jiǎng)h除每一行行尾的指定字符

  【4】 正則表達(dá)式應(yīng)用——替換帶有半角括號(hào)的多行

  【5】 正則表達(dá)式應(yīng)用——?jiǎng)h除空行----------------------------江德華

  軟件技巧類

  ------------------------------------------------------

  【6】 軟件技巧——鍵盤記錄的注意事項(xiàng)

  【7】 軟件技巧——關(guān)閉文檔標(biāo)簽的便捷方法

  【8】 軟件技巧——如何去掉 EditPlus 保存文本文件時(shí)的添加后綴提示,?

  【9】 軟件技巧——提示找不到語(yǔ)法文件的解決辦法

  【10】軟件技巧——設(shè)置editplus支持其它文字,,如韓文----------jackywu1978@LJF

  【11】軟件技巧——FTP 上傳的設(shè)置----------------------------李應(yīng)文2.11漢化版

  【12】軟件技巧——如何禁用備份文件功能?

  【13】軟件技巧——添加語(yǔ)法文件,、自動(dòng)完成文件,、以及剪輯庫(kù)文件

  工具集成類

  ------------------------------------------------------

  【14】工具集成——編譯器集成例子(Java、Borland C++,、Visual C++,、Inno Setup、nsis,、C#)

  【15】工具集成——讓Editplus調(diào)試PHP程序----------------------avenger,aukw@CCF

  【16】工具集成——打造 PHP 調(diào)試環(huán)境(二)----------------------老七2.11漢化版

  【17】在 WINPE 中集成 EDITPLUS

  后續(xù)添加

  ------------------------------------------------------

  【18】支持帶UTF-8標(biāo)記/不帶UTF-8標(biāo)記的文件

  每個(gè)步驟都說(shuō)得很詳細(xì)了,,就沒(méi)有必要貼圖了,體積不要太大才好,。

  【1】正則表達(dá)式應(yīng)用——替換指定內(nèi)容到行尾

  原始文本如下面兩行

  abc aaaaa

  123 abc 444

  希望每次遇到“abc”,,則替換“abc”以及其后到行尾的內(nèi)容為“abc efg”

  即上面的文本最終替換為:

  abc efg

  123 abc efg

  解決:

  ① 在替換對(duì)話框,,查找內(nèi)容里輸入“abc.*”

 ?、?同時(shí)勾選“正則表達(dá)式”復(fù)選框,然后點(diǎn)擊“全部替換”按鈕

  其中,,符號(hào)的含義如下:

  “.” =匹配任意字符

  “*” =匹配0次或更多

  注意:其實(shí)就是正則表達(dá)式替換,,這里只是把一些曾經(jīng)提出的問(wèn)題加以整理,單純從正則表達(dá)式本身來(lái)說(shuō),,就可以引申出成千上萬(wàn)種特例,。

  【2】正則表達(dá)式應(yīng)用——數(shù)字替換 (Microshaoft@CCF,jiuk2k@CCF)

  希望把

  asdadas123asdasdas456asdasdasd789asdasd

  替換為:

  asdadas[123]asdasdas[456]asdasdasd[789]asdasd

  在替換對(duì)話框里面,勾選“正則表達(dá)式”復(fù)選框,;

  在查找內(nèi)容里面輸入“[0-9][0-9][0-9]”,,不含引號(hào)

  “替換為:”里面輸入“[\0\1\2]”,不含引號(hào)

  范圍為你所操作的范圍,,然后選擇替換即可,。

  實(shí)際上這也是正則表達(dá)式的使用特例,“[0-9]”表示匹配0~9之間的任何特例,,同樣“[a-z]”就表示匹配a~z之間的任何特例

  上面重復(fù)使用了“[0-9]”,,表示連續(xù)出現(xiàn)的三個(gè)數(shù)字

  “\0”代表第一個(gè)“[0-9]”對(duì)應(yīng)的原型,,“\1”代表第二個(gè)“[0-9]”對(duì)應(yīng)的原型,依此類推

  “[”,、“]”為單純的字符,,表示添加“[”或“]”,如果輸入“其它\0\1\2其它”,,則替換結(jié)果為:

  asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd

  功能增強(qiáng)(by jiuk2k@CCF):

  如果將查找內(nèi)容“[0-9][0-9][0-9]”改為“[0-9]*[0-9]”,,對(duì)應(yīng)1 或 123 或 12345 或 ...

  大家根據(jù)需要定制

  相關(guān)內(nèi)容還有很多,可以自己參考正則表達(dá)式的語(yǔ)法仔細(xì)研究一下

  【3】正則表達(dá)式應(yīng)用——?jiǎng)h除每一行行尾的指定字符

  因?yàn)檫@幾個(gè)字符在行中也是出現(xiàn)的,所以肯定不能用簡(jiǎn)單的替換實(shí)現(xiàn)

  比如

  12345 1265345

  2345

  需要?jiǎng)h除每行末尾的“345”

  這個(gè)也算正則表達(dá)式的用法,,其實(shí)仔細(xì)看正則表達(dá)式應(yīng)該比較簡(jiǎn)單,,不過(guò)既然有這個(gè)問(wèn)題提出,說(shuō)明對(duì)正則表達(dá)式還得有個(gè)認(rèn)識(shí)過(guò)程,,解決方法如下

  解決:

  在替換對(duì)話框中,,啟用“正則表達(dá)式”復(fù)選框

  在查找內(nèi)容里面輸入“345$”

  這里“$”表示從行尾匹配

  如果從行首匹配,可以用“^”來(lái)實(shí)現(xiàn),,不過(guò) EditPlus 有另一個(gè)功能可以很簡(jiǎn)單的刪除行首的字符串

  a. 選擇要操作的行

  b. 編輯-格式-刪除行注釋

  c. 在彈出對(duì)話框里面輸入要清除的行首字符,,確定

  【4】正則表達(dá)式應(yīng)用——替換帶有半角括號(hào)的多行

  幾百個(gè)網(wǎng)頁(yè)中都有下面一段代碼:

  <script LANGUAGE="JavaScript1.1">

  <!--

  htmlAdWH('93163607', '728', '90');

  //-->

  </SCRIPT>

  我想把它們都去掉,可是找了很多search & replace的軟件,,都是只能對(duì)“一行”進(jìn)行操作,。

  EditPlus 打開(kāi)幾百個(gè)網(wǎng)頁(yè)文件還是比較順暢的,所以完全可以勝任這個(gè)工作,。

  具體解決方法,,在 Editplus 中使用正則表達(dá)式,由于“(”,、“)”被用做預(yù)設(shè)表達(dá)式(或者可以稱作子表達(dá)式)的標(biāo)志,,所以查找

  “<script LANGUAGE="JavaScript1.1">\n<!--\nhtmlAdWH('93163607', '728', '90'.);\n//-->\n</SCRIPT>\n”

  時(shí)會(huì)提示查找不到,所以也就無(wú)法進(jìn)行替換了,,這時(shí)可以把“(”,、“)”使用任意字符標(biāo)記替代,即半角句號(hào):“.”,。替換內(nèi)容為

  <script LANGUAGE="JavaScript1.1">\n<!--\nhtmlAdWH.'93163607', '728', '90'.;\n//-->\n</SCRIPT>\n

  在替換對(duì)話框啟用“正則表達(dá)式”選項(xiàng),,這時(shí)就可以完成替換了

  補(bǔ)充:(lucida@DRL)

  對(duì)( ) 這樣的特殊符號(hào),應(yīng)該用\( \)來(lái)表示,,這也是很標(biāo)準(zhǔn)的regexp語(yǔ)法,,可以寫為

  <script LANGUAGE="JavaScript1.1">\n<!--\nhtmlAdWH\('93163607', '728', '90'\);\n//-->\n</SCRIPT>\n

  【5】正則表達(dá)式應(yīng)用——?jiǎng)h除空行

  啟動(dòng)EditPlus,打開(kāi)待處理的文本類型文件,。

 ?、佟⑦x擇“查找”菜單的“替換”命令,彈出文本替換對(duì)話框,。選中“正則表達(dá)式”復(fù)選框,,表明我們要在查找、替換中使用正則表達(dá)式,。然后,,選中“替換范圍”中的“當(dāng)前文件”,表明對(duì)當(dāng)前文件操作,。

 ?、?、單擊“查找內(nèi)容”組合框右側(cè)的按鈕,,出現(xiàn)下拉菜單。

 ?、?、下面的操作添加正則表達(dá)式,該表達(dá)式代表待查找的空行,。(技巧提示:空行僅包括空格符,、制表符、回車符,,且必須以這三個(gè)符號(hào)之一作為一行的開(kāi)頭,,并且以回車符結(jié)尾,查找空行的關(guān)鍵是構(gòu)造代表空行的正則表達(dá)式),。

  直接在"查找"中輸入正則表達(dá)式“^[ \t]*\n”,,注意\t前有空格符。

 ?。?)選擇“從行首開(kāi)始匹配”,,“查找內(nèi)容”組合框中出現(xiàn)字符“^”,表示待查找字符串必須出現(xiàn)在文本中一行的行首,。

 ?。?)選擇“字符在范圍中”,那么在“^”后會(huì)增加一對(duì)括號(hào)“[]”,,當(dāng)前插入點(diǎn)在括號(hào)中,。括號(hào)在正則表達(dá)式中表示,文本中的字符匹配括號(hào)中任意一個(gè)字符即符合查找條件,。

 ?。?)按一下空格鍵,添加空格符,??崭穹强招械囊粋€(gè)組成成分。

  (4)選擇“制表符”,,添加代表制表符的“\t”,。

  (5)移動(dòng)光標(biāo),,將當(dāng)前插入點(diǎn)移到“]”之后,,然后選擇“匹配 0 次或更多”,該操作會(huì)添加星號(hào)字符“*”,。星號(hào)表示,,其前面的括號(hào)“[]”內(nèi)的空格符或制表符,在一行中出現(xiàn)0個(gè)或多個(gè),。

 ?。?)選擇“換行符”,插入“\n”,,表示回車符,。

  ④,、“替換為”組合框保持空,,表示刪除查找到的內(nèi)容。單擊“替換”按鈕逐個(gè)行刪除空行,,或單擊“全部替換”按鈕刪除全部空行(注意:EditPlus有時(shí)存在“全部替換”不能一次性完全刪除空行的問(wèn)題,,可能是程序BUG,需要多按幾次按鈕),。

  【6】軟件技巧——鍵盤記錄的注意事項(xiàng)

  EditPlus 的鍵盤記錄有些類似于 UltraEdit 的宏操作,,不過(guò)功能相對(duì)單一,錄制的文件可編輯性較差,。

  由于基本無(wú)法編輯錄制的文件,,所以錄制的時(shí)候?yàn)榱吮苊怃浿剖。扑]純粹使用鍵盤操作,,以下是比較關(guān)鍵的幾個(gè)鍵盤組合:

  Ctrl+F = 調(diào)出查找對(duì)話框

  Ctrl+H = 調(diào)出替換對(duì)話框

  Alt+F4 = 關(guān)閉作用,,比如,關(guān)閉查找對(duì)話框,、關(guān)閉替換對(duì)話框,,等等

  其它鍵盤快捷鍵在“幫助-快捷鍵列表”里面可以很容易的查找到,這里就不細(xì)說(shuō)了,。

  【7】軟件技巧——關(guān)閉文檔標(biāo)簽的便捷方法

  右鍵單擊文檔標(biāo)簽工具條,,彈出菜單中選擇“標(biāo)簽選項(xiàng)”,選中“用鼠標(biāo)中間的按鈕關(guān)閉”,,這里包括鼠標(biāo)的滾輪,。

  【8】軟件技巧——如何去掉 EditPlus 保存文本文件時(shí)的添加后綴提示?

  如果你使用 EditPlus 進(jìn)行文本編輯,那么每次創(chuàng)建文本文件,,編輯后保存時(shí),,盡管文件類型下拉列表中顯示的是文本文件, EditPlus 還是詢問(wèn)你是否添加".txt"后綴,,是不是很煩,?

  解決方法:

  ① 在程序目錄建立一個(gè)空的文件“template.txt”

 ?、?“工具-參數(shù)設(shè)置-模板”里面,,單擊“添加”按鈕添加模板,“菜單文本”這里輸入“Text”,,瀏覽“template.txt”,,之后確定即可

  ③ “文件-新建-text”,,就可以建立一個(gè)空的文本文件,,保存時(shí),,這個(gè)文件自動(dòng)帶有擴(kuò)展名".txt",,也就避免了令人頭疼的確認(rèn)

  ④ 模板設(shè)置文件名稱為“template.ini”,,如果和主程序同一路徑,,可以使用相對(duì)路徑

  羅嗦了點(diǎn),不過(guò)管用

  要自動(dòng)創(chuàng)建帶有某種后綴的文件,,方法同上,。

  【9】軟件技巧——提示找不到語(yǔ)法文件 *.stx 的解決辦法

  原因多為設(shè)置的語(yǔ)法文件不存在或者是路徑設(shè)置不對(duì)。這是因?yàn)?EditPlus 的語(yǔ)法是設(shè)置文件采用的是絕對(duì)路徑,,而在你設(shè)置了語(yǔ)法文件之后,,再把程序復(fù)制到其它目錄,因而導(dǎo)致 EditPlus 無(wú)法找到該語(yǔ)法文件,。

  解決辦法:

  在主程序目錄里,,找到 Setting.ini 這是 EditPlus 存放語(yǔ)法的文件

  查找后綴為“.stx”、“acp”的文本內(nèi)容,,或者查找?guī)в序?qū)動(dòng)器符號(hào)的行,,比如

  Syntax file=C:\Program Files\EditPlus 2\cpp.stx

  那么,就把”C:\Program Files\EditPlus 2\“替換成你當(dāng)前軟件的路徑,。

  其它提示找不到文件的解決方法同上

  【10】軟件技巧——設(shè)置editplus支持其它文字,,如韓文

  在editplus里打開(kāi)文件,出來(lái)打開(kāi)文件對(duì)話框,;然后點(diǎn)擊“轉(zhuǎn)換器”后面的那個(gè)省略號(hào),,會(huì)出來(lái)自定義轉(zhuǎn)換器對(duì)話框;在右邊選擇你需要的編碼方式,添加到左邊,,然后點(diǎn)確定,;最后在下拉框中選擇需要的編碼方式,然后打開(kāi)文件即可,。

  【11】軟件技巧——FTP 上傳的設(shè)置

  “文件->遠(yuǎn)程操作->FTP 上傳”在“設(shè)置”選項(xiàng)卡中設(shè)置好參數(shù)(“子目錄”前面應(yīng)該加“/”如“/web/”),,點(diǎn)擊“確定”回到“FTP 上傳”選項(xiàng)卡,然后點(diǎn)擊“上傳”即可,;“批量上傳”的設(shè)置類似,。

  【12】軟件技巧——如何禁用備份文件功能?

  在“參數(shù)選擇”的文件選項(xiàng)頁(yè),,禁用“'保存時(shí)自動(dòng)創(chuàng)建備份文件”選項(xiàng)

  【13】軟件技巧——添加語(yǔ)法文件,、自動(dòng)完成文件、以及剪輯庫(kù)文件

  要添加 *.STX(語(yǔ)法文件)或 *.ACP(自動(dòng)完成文件):

  1. 選擇“參數(shù)選擇→語(yǔ)法”

  2. 單擊“添加”按鈕,,命名,,在“擴(kuò)展名”部分輸入對(duì)應(yīng)擴(kuò)展名(不帶“.”)

  3. 瀏覽/輸入 STX(語(yǔ)法文件部分) 以及 ACP(自動(dòng)完成文件部分)。

  添加剪輯庫(kù)文件(*.CTL)

  復(fù)制相應(yīng) *.CTL 文件到軟件安裝目錄,,重新啟動(dòng) EditPlus ,,則系統(tǒng)自動(dòng)識(shí)別。

  作者主頁(yè)有很多語(yǔ)法自動(dòng)完成文件下載,,地址

  http:///files.html

  【14】工具集成——編譯器集成例子(Java,、Borland C++、Visual C++,、Inno Setup,、nsis)

  在“工具→參數(shù)選擇→用戶工具”選項(xiàng)頁(yè)設(shè)置,設(shè)置步驟

 ?、?設(shè)置組名稱,,這里也可以不設(shè)置

  ② 單擊“添加工具→應(yīng)用程序”按鈕并進(jìn)行如下設(shè)置

 ?、?各種類似"$(FilePath)"的參數(shù)可以在文本框右側(cè)的箭頭下拉菜單中獲取,,具體含義如下

  參數(shù) 描述

  $(FilePath) 文件路徑(文件全名,含目錄和文件名)

  $(FileDir) 文件目錄(不帶文件名)

  $(FileName) 文件名(不帶目錄)

  $(FileNameNoExt) 不帶擴(kuò)展名的文件名(不帶目錄)

  $(FileExt) 擴(kuò)展名(當(dāng)前文件)

  $(ProjectName) 工程名稱(當(dāng)前工程名)

  $(CurLine) 當(dāng)前行號(hào)(光標(biāo)位置處的行號(hào))

  $(CurCol) 當(dāng)前列號(hào)(光標(biāo)位置處的列號(hào))

  $(CurSel) 當(dāng)前文本(插入當(dāng)前選定文本)

  $(CurWord) 當(dāng)前單詞(插入當(dāng)前單詞)

  $(WindowList) 顯示當(dāng)前窗口列表并選擇特定文件

  例子 1. Java 編譯器

  菜單文本:Java 編譯器

  命令:c:\java\bin\javac.exe

  參數(shù):"$(FilePath)"

  初始目錄:$(FileDir)

  捕獲輸出:開(kāi)啟

  要運(yùn)行已編譯的 Java 類文件,,你可以進(jìn)行如下設(shè)置:

  菜單文本:Java

  命令:c:\java\bin\java.exe

  參數(shù):$(FileNameNoExt)

  初始目錄:$(FileDir)

  “命令”部分應(yīng)當(dāng)替換為實(shí)際的 Java 解釋器的路徑,。

  例子 2. Borland C++

  菜單文本:Borland C

  命令:c:\bc\bin\bcc32.exe

  參數(shù):-Ic:\bc\include -Lc:\bc\lib -n$(FileDir) $(FilePath)

  初始目錄:c:\bc\bin

  捕獲輸出:開(kāi)啟

  例子 3. Visual C++

  菜單文本:Visual C++

  命令:c:\msdev\vc98\bin\cl.exe

  參數(shù):"$(FilePath)"

  初始目錄:$(FileDir)

  捕獲輸出:開(kāi)啟

  例子 4. Inno Setup

  菜單文本:編譯 Inno

  命令:C:\Program Files\Inno Setup 4\Compil32.exe”

  參數(shù):/cc $(FileName)

  初始目錄:$(FileDir)

  捕獲輸出:開(kāi)啟

  例子 5. nsis

  菜單文本:編譯 nsis

  命令:C:\NSIS\makensis.exe

  參數(shù):$(FileName)

  初始目錄:$(FileDir)

  捕獲輸出:開(kāi)啟

  例子 6. C#

  菜單文本:編譯 C#

  命令:C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\csc.exe

  參數(shù):$(FileName)

  初始目錄:$(FileDir)

  捕獲輸出:開(kāi)啟

  在上面設(shè)置中,在命令部分,,必須使用系統(tǒng)中各自編譯器的絕對(duì)路徑,。

  設(shè)置完畢后,你可以在“工具”菜單運(yùn)行對(duì)應(yīng)工具了,,運(yùn)行結(jié)果會(huì)顯示在底部的輸出窗口,,你也可以通過(guò)快捷鍵(Ctrl + 0-9) 運(yùn)行,,或者是通過(guò)“用戶工具欄”的快捷按鈕運(yùn)行。

  要運(yùn)行已編譯的 *.exe 文件,,你可以進(jìn)行如下設(shè)置(此時(shí)可執(zhí)行文件需要和編譯文件同名):

  菜單文本:Run

  命令:$(FileNameNoExt)

  參數(shù):

  初始目錄:$(FileDir)

  【15】工具集成—— 讓Editplus調(diào)試PHP程序

  1:打開(kāi)Editplus,,選擇"工具->配置用戶工具..."菜單。

  2:在彈出的窗口中選擇"添加工具->應(yīng)用程序",給新程序起一個(gè)好記的名字,,比如這里我們用"Debug PHP",在"菜單文本"中輸入"Debug PHP",。點(diǎn)擊"命令行"右邊的按鈕,找到你的php.exe所在的路徑,例如這里是"c:\php\php.exe",。再點(diǎn)擊"參數(shù)"右邊的下拉按鈕選擇"文件路徑",最后再把"捕獲輸出"前面的復(fù)選框選上,。

  3:現(xiàn)在測(cè)試一下,新建一個(gè)php文件,,按快捷鍵Ctrl+1可以激活剛才我們?cè)O(shè)置的工具(如果你設(shè)置了多個(gè)工具,快捷鍵可能會(huì)有所不同),現(xiàn)在你可以看到它已經(jīng)能正常工作了,。但是還有一點(diǎn)不太理想:如果你的PHP程序出錯(cuò),在輸出窗口會(huì)提示你第幾行出錯(cuò) ,單擊這一行提示,Editplus老是提示你找不到某某文件,是否新建,。接下下我們要修正這個(gè)功能,。

  4:打開(kāi)剛才用戶工具設(shè)置窗口,找到剛才設(shè)置的"Debug PHP"工具,。點(diǎn)擊"捕獲輸出"復(fù)選框旁邊的"輸出模式"按鈕,會(huì)彈出一個(gè)定義輸出模式的窗體,,把"使用默認(rèn)輸出模式"前面的復(fù)選框去掉, 在"正則表達(dá)式"這一項(xiàng)的文本框中輸入" ^.+ in (.+) line ([0-9]+) "(不包括引號(hào)),細(xì)心的朋友可能會(huì)發(fā)現(xiàn),這里使用的也正則表達(dá)式的語(yǔ)法,。然后,,在下面的"文件名"下拉菜單中選擇"預(yù)設(shè)表達(dá)式 1",,即上邊正則表達(dá)式中的第一個(gè)參數(shù),"行"下拉菜單項(xiàng)選擇"預(yù)設(shè)表達(dá)式 2",,"列"下拉項(xiàng)保持為空。然后保存設(shè)置,。

  5:好了,,現(xiàn)在再來(lái)試一下吧,雙擊出錯(cuò)的行數(shù),,Editplus就會(huì)自動(dòng)激活出錯(cuò)文件,,并把光標(biāo)定位到出錯(cuò)行,是不是特別方便呢?!

  現(xiàn)在,Editplus經(jīng)過(guò)我們的"改造",已經(jīng)可以即時(shí)的調(diào)試PHP文件了,雖然還不是"可視化"界面的,,但對(duì)于一些平常的小程序來(lái)查錯(cuò)還是非常好用的,。Editplus真是不款不可多得的好工具,如果你有什么使用技巧,,不要忘了大家一起分享哦,。^O^

  如果不能切換錯(cuò)誤行號(hào),請(qǐng)嘗試作如下修改: (by aukw@CCF)

  1.php.ini 中html_errors = Off打開(kāi)

  //如果你不打開(kāi),,3.中的表達(dá)式要修改

  2.參數(shù)改成:-q -f "$(FilePath)"

  //不加"符號(hào)的話文件名有空格的文件調(diào)試失敗,。,。

  //-q不輸出html頭信息,你去掉也行,,不過(guò)調(diào)試時(shí)候你一般用不到那些header信息

  3." ^.+ in (.+) line ([0-9]+) " 改成 "^.+ in (.+) on line ([0-9]+)$"

  //如果還是不行,,請(qǐng)注意調(diào)試結(jié)果,自己修改表達(dá)式來(lái)取出文件名和行號(hào)

  【16】工具集成——打造 PHP 調(diào)試環(huán)境(二)

  1: 把剪輯庫(kù)定位在 PHP4 Functions 上就可以在編輯時(shí), 利用[插入]->[匹配剪輯]命令,就可以自動(dòng)完成末輸入完整的 PHP 函數(shù)(或直接按 F2 鍵)

  2: 類似上面,在選擇部分文字后,同樣可以自動(dòng)完成,。(同 F2)

  3: 在[參數(shù)選擇]->[設(shè)置和語(yǔ)法]->PHP->自動(dòng)完成, 選擇目錄下的 php.acp 文件,你可以定制自己的自動(dòng)完成方式.

  4: 想要即時(shí)預(yù)覽文件,可在[參數(shù)選擇]->[工具]->WEB 服務(wù)器中添加本地目錄,,(注意不要加 http:// , 應(yīng)是一個(gè)有效的站點(diǎn))。

  如: 主機(jī)->localhost/php | 根目錄->D:\php

  主機(jī)->localhost/asp | 根目錄->D:\asp

  主機(jī)->localhost/cgi | 根目錄->D:\cgi

  完成設(shè)置后只要腳本文件位于這些目錄下(子目錄也沒(méi)問(wèn)題), 就能夠正確解釋.

  5: 各種語(yǔ)法和模板文件可以在 http:///files.html 獲得,,可根據(jù)需要選用和編輯,。

  6: Ctrl+F11 可顯示當(dāng)前文件中的函數(shù)列表.

  7: 添加各種用戶工具.如:

  啟動(dòng)MYSQL服務(wù)器管理工具->C:\mysql\bin\winmysqladmin.exe

  啟動(dòng)Apache服務(wù)器->C:\Apache\bin\Apache.exe -k start

  啟動(dòng)Apache服務(wù)器->C:\Apache\bin\Apache.exe -k stop (shutdown)

  8: DBG 附帶有一個(gè) prof_results.php 文件,可剖析 PHP 程序的性能.

  雖不是真正的調(diào)試器,但已經(jīng)夠了.

  OK! 經(jīng)過(guò)改造后,是不是有點(diǎn)象一個(gè) IDE 什么?還差點(diǎn),沒(méi)有即時(shí)幫助...看我的,再來(lái):

  9: 把 php_manual_en.chm (最好是擴(kuò)展幫助手冊(cè))加入到用戶工具中, 當(dāng)遇到需要參考的關(guān)鍵字時(shí), 把光標(biāo)定位其上, 按下快捷鍵 Ctrl+1, 看到了嗎.

  在輸入時(shí)有想不起來(lái)的函數(shù)名時(shí), 先按照第 1 條的方法調(diào)出函數(shù), 然后...怎么樣?

  以上有的是對(duì)于調(diào)試工具的設(shè)置,由于此類工具比較多,,大家設(shè)置時(shí)參考以上的基本就差不多了,,所以就不過(guò)多的列舉了。

  【17】在 WINPE 中集成 EDITPLUS

  可以基于目前的bartpe做得WINPE中,,菜單使用nu2menu制作

  默認(rèn)位置為 \programs\editplus\

  默認(rèn)系統(tǒng)位置為光盤的 i386 目錄

  i386/system32 的 autorun.bat 中添加外殼集成(系統(tǒng)右鍵)

  regedit /s %SystemDrive%\programs\editplus\REG.REG

  regsvr32 /s \programs\editplus\EPPSHELL.DLL

 ?。╮eg.reg保存了epp的工具欄信息,當(dāng)然注冊(cè)用戶也可以放置注冊(cè)信息)

  復(fù)制editplus安裝包里面的文件到programs\editplus\,,注意,,如果有setting.ini,刪掉該文件,,在nu2menu里面加入以下句子(可以根據(jù)需要安排位于特定菜單條目下)

  <MITEM TYPE="ITEM" DISABLED="@Not(@FileExists(@GetProgramDrive()\Programs\EditPlus\editplus.exe))" CMD="RUN"

  FUNC="@GetProgramDrive()\Programs\EditPlus\editplus.exe">EditPlus 文本編輯</MITEM>

  【18】支持帶UTF-8標(biāo)記/不帶UTF-8標(biāo)記的文件 Lei@DRL提出并測(cè)試

  這里Byte Order Mark翻譯為標(biāo)記/文件頭/標(biāo)簽

  參數(shù)選擇-文件-里面設(shè)置“支持不帶有UTF-8文件頭的UTF-8文件”,,我這里翻譯標(biāo)簽為UTF-8文件頭,如果復(fù)選該項(xiàng),,應(yīng)該是保存為不帶標(biāo)簽的Utf-8,,如果不復(fù)選,應(yīng)該是保存成帶有BOM的UTF-8,。

  這樣就可以打開(kāi)帶簽名的UTF-8文件,,并且可以正常編輯,但是又不能打開(kāi)不帶簽名的了,,想要打開(kāi)不帶簽名的還需要改回來(lái)...不過(guò)雖然有點(diǎn)麻煩,,但是總算能用了

  1.驗(yàn)證用戶名和密碼:("^[a-zA-Z]\w{5,15}$")正確格式:"[A-Z][a-z]_[0-9]"組成,并且第一個(gè)字必須為字母6~16位;

  2.驗(yàn)證電話號(hào)碼:("^(\d{3.4}-)\d{7,8}$")正確格式:xxx/xxxx-xxxxxxx/xxxxxxxx,;

  3.驗(yàn)證身份證號(hào)(15位或18位數(shù)字):("^\d{15}|\d{18}$"),;

  4.驗(yàn)證Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");

  5.只能輸入由數(shù)字和26個(gè)英文字母組成的字符串:("^[A-Za-z0-9]+$") ;

  6.整數(shù)或者小數(shù):^[0-9]+\.{0,1}[0-9]{0,2}$

  7.只能輸入數(shù)字:"^[0-9]*$",。

  8.只能輸入n位的數(shù)字:"^\d{n}$",。

  9.只能輸入至少n位的數(shù)字:"^\d{n,}$"。

  10.只能輸入m~n位的數(shù)字:,。"^\d{m,n}$"

  11.只能輸入零和非零開(kāi)頭的數(shù)字:"^(0|[1-9][0-9]*)$",。

  12.只能輸入有兩位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{2})?$",。

  13.只能輸入有1~3位小數(shù)的正實(shí)數(shù):"^[0-9]+(.[0-9]{1,3})?$"。

  14.只能輸入非零的正整數(shù):"^\+?[1-9][0-9]*$",。

  15.只能輸入非零的負(fù)整數(shù):"^\-[1-9][]0-9"*$,。

  16.只能輸入長(zhǎng)度為3的字符:"^.{3}$"。

  17.只能輸入由26個(gè)英文字母組成的字符串:"^[A-Za-z]+$",。

  18.只能輸入由26個(gè)大寫英文字母組成的字符串:"^[A-Z]+$",。

  19.只能輸入由26個(gè)小寫英文字母組成的字符串:"^[a-z]+$"。

  20.驗(yàn)證是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+",。

  21.只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"

  22.驗(yàn)證URL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$",。

  23.驗(yàn)證一年的12個(gè)月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。

  24.驗(yàn)證一個(gè)月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為,;"01"~"09"和"1"~"31",。

  .(小圓點(diǎn))

  匹配除換行符號(hào)外的任意字符

  \w

  匹配字母、數(shù)字,、下劃線和漢字

  \s

  匹配任意空白字符

  \d

  匹配數(shù)字

  \b

  匹配單詞的開(kāi)始或結(jié)束

  ^

  匹配字符串的開(kāi)始,,或排除

  $

  匹配字符串的結(jié)束

  以上都是單個(gè)字符匹配

  如果要求匹配元字符中的符號(hào),則需要加反斜杠,。例如\+表示匹配加號(hào)

  www.baidu.com和www\.baidu\.com

  *

  重復(fù)零次或多次

  +

  重復(fù)一次或多次

 ?。?br>
  重復(fù)零次或一次

  {n}

  重復(fù)n次

  {n,}

  至少重復(fù)n次

  {n,m}

  重復(fù)n到m次

  \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

  ^w{3}\..+\.\w+$

  []

  表示匹配中括號(hào)中的任一字符

  ()

  小括號(hào)內(nèi)的為一個(gè)整體

  |

  前后兩者任意匹配一種

  \(?0\d{2}[)-]?\d{8}

  (\(0\d{2}\)\d{8})|(0\d{2}-\d{8})|0\d{2}\d{8}

  \W:與\w相反

  \S:與\s相反

  \D:與\d相反

  \B:與\b相反

  [^something]:與[something]相反

  0\d{2}-\d{8}

  \b\w{6}\b

  ^\w+

  <a[^>]+>

  Windows98|Windows2000|WindosXP

  ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

  ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

  ^\+?[1-9][0-9]*$和^\-[1-9][]0-9“*$

  ^[A-Za-z]+$和^[A-Z]+$和^[a-z]+$

  ^[a-zA-Z]\w{5,15}$

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多