2011年9月20日星期二

notepad++正则表达式替换字符串详解

正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率。 

EditPlus的查找,替换,文件中查找支持以下的正则表达式: 

表达式 说明 
\t 制表符. 
\n 新行. 
. 匹配任意字符. 
| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc". 
[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意数字. 
[^] 匹配列表之外的任何单个字符. 例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符. "[^0-9]" 匹配任意非数字字符. 
* 其左边的字符被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee". 
+ 其左边的字符被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b". 
? 其左边的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee". 
^ 其右边的表达式被匹配在一行的开始. 例如 "^A" 仅仅匹配以 "A" 开头的行. 
$ 其左边的表达式被匹配在一行的结尾. 例如 "e$" 仅仅匹配以 "e" 结尾的行. 
() 影响表达式匹配的顺序,并且用作表达式的分组标记. 
\ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\". 

例子: 

原始串 
str[1]abc[991]; 
str[2]abc[992]; 
str[11]abc[993]; 
str[22]abc[994]; 
str[111]abc[995]; 
str[222]abc[996]; 
str[1111]abc[997]; 
str[2222]abc[999]; 

目标串: 
abc[1]; 
abc[2]; 
abc[11]; 
abc[22]; 
abc[111]; 
abc[222]; 
abc[1111]; 
abc[2222]; 

处理: 
查找串:str\[([0-9]+)\]abc\[[0-9]+\] 
替换串:abc[\1] 

【1】正则表达式应用——替换指定内容到行尾 
原始文本如下面两行 
abc aaaaa 
123 abc 444 

希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg” 
即上面的文本最终替换为: 
abc efg 
123 abc efg 

解决: 
① 在替换对话框,查找内容里输入“abc.*” 
② 同时勾选“正则表达式”复选框,然后点击“全部替换”按钮 
其中,符号的含义如下: 
“.” =匹配任意字符 
“*” =匹配0次或更多 

注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。 

【2】正则表达式应用——数字替换 
希望把 
asdadas123asdasdas456asdasdasd789asdasd 
替换为: 
asdadas[123]asdasdas[456]asdasdasd[789]asdasd 

在替换对话框里面,勾选“正则表达式”复选框; 
在查找内容里面输入“[0-9][0-9][0-9]”,不含引号 
“替换为:”里面输入“[\0\1\2]”,不含引号 
范围为你所操作的范围,然后选择替换即可。 

实际上这也是正则表达式的使用特例,“[0-9]”表示匹配0~9之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例 
上面重复使用了“[0-9]”,表示连续出现的三个数字 
“\0”代表第一个“[0-9]”对应的原型,“\1”代表第二个“[0-9]”对应的原型,依此类推 
“[”、“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它\0\1\2其它”,则替换结果为: 

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

功能增强(by jiuk2k): 
如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 … 
大家根据需要定制 

相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下 

【3】正则表达式应用——删除每一行行尾的指定字符 
因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现 
比如 
12345 1265345 
2345 
需要删除每行末尾的“345” 
这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下 
解决: 
在替换对话框中,启用“正则表达式”复选框 
在查找内容里面输入“345$” 
这里“$”表示从行尾匹配 

如果从行首匹配,可以用“^”来实现,不过 EditPlus 有另一个功能可以很简单的删除行首的字符串 
a. 选择要操作的行 
b. 编辑-格式-删除行注释 
c. 在弹出对话框里面输入要清除的行首字符,确定 

【4】正则表达式应用——替换带有半角括号的多行 
几百个网页中都有下面一段代码: 
\n 
在替换对话框启用“正则表达式”选项,这时就可以完成替换了 

【5】正则表达式应用——删除空行 
启动EditPlus,打开待处理的文本类型文件。 
①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围” 中的“当前文件”,表明对当前文件操作。 
②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。 
③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且 以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。 
直接在”查找”中输入正则表达式“^[ \t]*\n”,注意\t前有空格符。 
(1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。 
(2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符 即符合查找条件。 
(3)按一下空格键,添加空格符。空格符是空行的一个组成成分。 
(4)选择“制表符”,添加代表制表符的“\t”。 
(5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。 
(6)选择“换行符”,插入“\n”,表示回车符。 
④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时 存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。 

1.在汉化的时候,是否经常碰到这样的语句需要翻译: 

Code: 
“Error adding the post!”; 
“Error adding the comment!”; 
“Error adding the user!”; 

如果有很多类似的文件一个一个翻译显然很累而且感觉很无聊。 

其实可以这样处理,在Editplus里面用 替换 功能,在替换对话框选中“正则表达式”复选框: 
查找原文件: 

Code: 
“Error adding ([^!|"|;]*) 

替换成: 

Code: 
“在增加\1时发生错误 

这样替换之后发生了什么?结果是: 

Code: 
“在增加the post时发生错误!”; 
“在增加the comment时发生错误!”; 
“在增加the user时发生错误!”; 

ok,接下来你会怎么做?当然再替换一次把the post、the comment、the user替换成你要翻译的词。得到最后的结果: 

Code: 
“在增加帖子时发生错误!”; 
“在增加评论时发生错误!”; 
“在增加用户时发生错误!”; 

2.要提取的单词在中间,比如: 

Code: 
can not be deleted because 
can not be added because 
can not be updating because 

可以用这种方式: 
在Editplus里面用 替换 功能,在替换对话框选中“正则表达式”复选框: 
查找原文件: 

Code: 
can not be ([^ ]*) because 

替换成: 

Code: 
无法被\1因为 

这样替换之后发生了什么?结果是: 

Code: 
无法被deleted因为 
无法被added因为 
无法被updating因为 

其余步骤如上。 

在汉化量很大而且句式比较单调的情况下对效率的提高很明显! 

解释一下:([^!|"|;]*) 的意思是 不等于 ! 和 ” 和 ; 中的任何一个,意思就是这3个字符之外的所有字符将被选中(替换区域); 
\1 即被选中的替换区域所在的新位置(复制到这个新位置)。 

3.经常手工清理一行一行地删除文本文件里面的空白行,其实可以交给Editplus更好的完成,在Editplus里面用替换功能,在替换对话框选中 “正则表达式”复选框: 
查找原文件: 

Code: 
^[ \t]*\n 

替换部分为空就可以删除空白行了,执行一下看看:) 

abandon[2''b9nd2n]v.抛弃,放弃 
abandonment[2''b9nd2nm2nt]n.放弃 
abbreviation[2bri:vi''ei62n]n.缩写 
abeyance[2''bei2ns]n.缓办,中止 
abide[2''baid]v.遵守 
ability[2''biliti]n.能力 
able[''eibl]adj.有能力的,能干的 
abnormal[9b''n0:m2l]adj.反常的,变态的 
aboard[2''b0:d]adv.船(车)上 

1. 
查找: (^[a-zA-Z0-0\-]+)(\[*.*\]+)(.*) 
替换: @@@@@”\1″,”\2″,”\3″, 
效果: 
@@@@@”abandon”,”[2''b9nd2n]“,”v.抛弃,放弃”, 
@@@@@”abandonment”,”[2''b9nd2nm2nt]“,”n.放弃”, 
@@@@@”abbreviation”,”[2bri:vi''ei62n]“,”n.缩写”, 
@@@@@”abeyance”,”[2''bei2ns]“,”n.缓办,中止”, 
@@@@@”abide”,”[2''baid]“,”v.遵守”, 
@@@@@”ability”,”[2''biliti]“,”n.能力”, 
@@@@@”able”,”[''eibl]“,”adj.有能力的,能干的”, 
@@@@@”abnormal”,”[9b''n0:m2l]“,”adj.反常的,变态的”, 
@@@@@”aboard”,”[2''b0:d]“,”adv.船(车)上”, 

2. 
查找: \n 
替换: 
注: 要次替换内容为空 
效果: 
@@@@@”abandon”,”[2''b9nd2n]“,”v.抛弃,放弃 ”,@@@@@”abandonment”,”[2''b9nd2nm2nt]“,”n.放弃 ”,@@@@@”abbreviation”,”[2bri:vi''ei62n]“,”n.缩写 ”,@@@@@”abeyance”,”[2''bei2ns]“,”n.缓办,中止”,@@@@@”abide”,”[2''baid]“,”v.遵守 ”,@@@@@”ability”,”[2''biliti]“,”n.能力”,@@@@@”able”,”[''eibl]“,”adj.有能力的,能 干的 ”,@@@@@”abnormal”,”[9b''n0:m2l]“,”adj.反常的,变态的 ”,@@@@@”aboard”,”[2''b0:d]“,”adv.船(车)上”,@@@@@”abolish”,”[2''b0li6]“,”v.废 除,取消”,@@@@@”abolition”,”[9b2''li62n]“,”n.废除,取消” 

3. 
查找: @@@@@ 
替换: \n 
效果: 
“abandon”,”[2''b9nd2n]“,”v.抛弃,放弃”, 
“abandonment”,”[2''b9nd2nm2nt]“,”n.放弃”, 
“abbreviation”,”[2bri:vi''ei62n]“,”n.缩写”, 
“abeyance”,”[2''bei2ns]“,”n.缓办,中止”, 
“abide”,”[2''baid]“,”v.遵守”, 
“ability”,”[2''biliti]“,”n.能力”, 
“able”,”[''eibl]“,”adj.有能力的,能干的”, 
“abnormal”,”[9b''n0:m2l]“,”adj.反常的,变态的”, 
“aboard”,”[2''b0:d]“,”adv.船(车)上”, 
“abolish”,”[2''b0li6]“,”v.废除,取消”, 

4. 任务完成 

2011年9月15日星期四

自製 iphone 滑動效果

第一次寫 jQuery plugin,發現有很多事情不能單單在 plugin 裡面就把他解決掉。裡面的 this 問題也讓我撞牆撞了好幾次。不過總算是有點東西出來了,雖然不知道能用在哪裡,但是也當作是個練功吧。

鏈結在此:
http://jquery.hinablue.me/jqiphoneslide

展示在此:
http://jquery.hinablue.me/jqiphoneslide/ipad.html

可以有的功能與設定:
  1. 增加自訂頁面(預設為空白頁,內容需自訂)
  2. 指定滑動至某頁
  3. 指定可抓取的滑動區塊
  4. 限制滑動最大頁數
  5. 可以另外指定拖曳區塊(可以不只一個)
  6. 可以指定特定上一頁、下一頁按鈕(可以不只一個)
  7. 可以隱藏特定頁面(僅計算顯示頁面數量,並重新計算長度)
  8. 可以垂直或水平拖曳
  9. 可以設定摩擦係數與拖曳敏感度
要注意的事情:
  1. 展示範例中,螢幕翻轉內容並不會跟著翻轉,請勿任意翻轉螢幕
  2. 展示範例中,不支援多點觸控功能,放大請用放大鏡
  3. 展示範例中,動態載入頁面並無內建,請自己寫
  4. 展示範例中,正妹照片由專業人士提供,絕非本站所有
  5. 展示範例中,照片版權並非本站所有,僅為展示使用
  6. 展示範例中,IE 若出現任何錯誤,作者一定不會修
  7. 展示範例中,非 IE 若出現任何錯誤,歡迎與作者討論

2011年9月8日星期四

windowsXP下配置apache+perl的運行環境

今天看了一下用Perl寫cgi的教程,於是想測試一下成果,於是,開始了安裝配置全過程. 因爲,以前做的是php開發,apache已安裝成功,並運行正常(安裝路徑:D:/wamp/bin/apache/Apache2.2.17),所以,在此對apache2的安裝就不多做說明. 在此着重說明perl的安裝過程及在apache下的配置. 1, 下載windows環境下的ActivePerl For Windows (http://www.activestate.com/activeperl/downloads). 2, 解壓縮,雙擊ActivePerl-5.12.4.1205-MSWin32-x86-294981.msi安裝.在此需要注意的是安裝路徑,Perl安裝的缺省目錄位置爲C:\usr,當然,你可以安裝在任意你喜歡的目錄,我就裝在(C:/Perl/,爲了便於管理) 3.配置Apache以支持CGI 打開httpd.conf修改: ScriptAlias /cgi-bin/ "D:/www/" AllowOverride All Options Indexes FollowSymLinks Options All Order allow,deny Allow from all Deny from allow AddHandler cgi-script .cgi .pl .exe 其中"D:/www/"是我打算存放*.pl腳本的目錄,把目錄的訪問權限都設爲All.(注意刪除前面的#,如果有的話), 在此,apache支持perl/cgi的環境就配置完整了. 4.在"D:/www/"目錄下創建一個hello.pl測試一下. #!C:/perl/bin/perl.exe #scriptname hello.pl print "Content-type: text/html\n\n"; # 此句一定要写而且写准确. print "Hello, World...\n"; 注意:當您瀏覽cgi程式出現500錯誤的時候可以看一下您的程式,是不是以:#!E:/webserver/perl/bin/perl.exe開頭。 或者沒有print "Content-type: text/html;\n\n";

windows nginx 搭建 perl fastcgi学习环境


windows nginx 搭建 perl fastcgi学习环境
2010年06月13日 星期日 上午 00:08
面对大规模的 web 访问,现在比较流行的方式就是采用 fastcgi 的方式进行处理,我们先看一下 fastcgi 的特点:
1. FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。
2. FastCGI 可在任何平台上使用,Netscape Enterprise 及 IIS 都有 FastCGI 的模块可供使用,阿帕奇 (Apache,以及利用 Apache 衍生出做的服务器) 上也有 mod_fastcgi 可用。
3. FastCGI 支持 C/C++、Java、PHP、Python、Ruby、Perl,Tcl 等程序语言。
4. FastCGI 的应用程序亦兼容于 CGI。即 FastCGI 的应用程序也可以当成 CGI 来执行。
5. 现有的 CGI 程序要改写成 FastCGI 非常简单,最少可能只需要多加入三行程序代码。
6. FastCGI 的侦错方式与 CGI 大同小异,只要带入程序所需的环境变量及参数,即可在命令列模式执行或侦错。
7. FastCGI 应用程序的写作方式与 CGI 类似,除了几项原则要特别注意外,FastCGI 的写作方式跟 CGI 几乎一样,与学习 Web Server API 比较起来, FastCGI 简单多了。
8. FastCGI 支授分布式运算 (distributed computing),即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
现在我们在 windows 上搭建一个简单的 fastcgi 运行平台,可以进行学习开发 fastcgi。
1.下载 nginx for windows 版本,下载地址:http://www.kevinworthington.com/wp-content/uploads/2009/04/nginx-0747-win32-setup.exe, 并安装,安装在 C:\nginx。
2.下载 perl,并安装,安装在 C:\Perl,并把 D:\Perl\bin 添加到 系统环境变量 Path 后面,与前面的字串用 分号(;) 分隔开

3.安装 perl fastcgi 模块,打开windows cmd,输入 ppm,就会弹出一个 Perl Package Manager

4.配置 nginx,在nginx 安装目录下 conf 目录中找到 nginx.conf 文件,编辑。找到这几行,并修改成:
location ~ \.fcgi$ {
  root html;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.fcgi;
  include fastcgi_params;
}
5.编写 perl fastcgi 脚本 test.fcgi,代码如下:
#!C:/Perl/bin/perl.exe
use FCGI;

my $socket = FCGI::OpenSocket( "localhost:9000", 5 );
my $request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket );

my $count;
while( $request->Accept() >= 0 ) {
  print "Content-type: text/html\r\n\r\n";
  print "nums is .. ";
  print ++$count;
}

FCGI::CloseSocket( $socket );
6.启动 nginx,打开windows cmd 切换到脚本所在的目录,运行:perl test.fcgi
7.开启浏览器,输入 http://127.0.0.1/test.fcgi, 即可看到运行结果,不停的刷新浏览器,结果会累加,可以开多个浏览器同时访问。
至此,环境搭建完毕。

Win下Perl安装MySQL模块


Active-Perl for Windows 这个套件能让您在 Windows 环境下执行 .pl 及 .cgi 的 PERL 脚本档,他不光可以搭配 IIS、Apache当然也能搭配雷电HTTPD。
Active-Perl for Windows 网址: http://www.activestate.com/Products/ActivePerl/
进入该网页後,点选 Get ActivePerl 後选择 Download FREE,当问及 Contact Details 时选择 Continue 直接略过,进入正式的下载网页後会看到 ActivePerl 5.8.8.820 (或目前最新的版号),选择 Windows (x86) 下载即可。
下载後执行其安装档案如 ActivePerl-5.8.8.820-MSWin32-x86-274739 看到如下画面即开始安装。

ActivePerl for Windows 之设定画面



请安装到预设路径 c:\perl 



出现这个画面时,如同我们所勾的来设定,这裡不需要建立 IIS 的相关设定。
安装完毕後,您得开始设定额外的 Perl module (模组),例如许多 Perl 程式都要用到 MySQL 我们就先帮您把 MySQL 模组也设定好。
首先执行 Windows 之命令列提示 (cmd.exe command prompt) c:\perl\bin\ppm-shell.bat 然後 ppm> 的命令提示会出现如下:

PPM - Programmer's Package Manager version 3.1.
Copyright (c) 2001 ActiveState SRL. All Rights Reserved.Entering interactive shell. Using Term::ReadLine::Stub as readline library.
Type 'help' to get started.
ppm>
输入以下之命令後按 :
Install DBI
PPM - Programmer's Package Manager version 3.1.
Copyright (c) 2001 ActiveState SRL. All Rights Reserved.Entering interactive shell. Using Term::ReadLine::Stub as readline library.
Type 'help' to get started.
ppm> install DBI
====================
Install 'DBI' version 1.42 in ActivePerl 5.8.3.809.
====================
Downloaded 508164 bytes.
Successfully installed DBI version 1.42 in ActivePerl 5.8.3.809.
ppm>

Install DBD-mysql
ppm> install DBD-mysql
====================
Install 'DBD-mysql' version 2.9002 in ActivePerl 5.8.3.809.
====================
Downloaded 178803 bytes.
Successfully installed DBD-mysql version 2.9002 in ActivePerl 5.8.3.809.
ppm>
正常安装完毕後输入 exit
到此 ActivePerl for Windows 的部分已经安装完毕

上海松善实业有限公司

    上海松善实业有限公司是一家集多品牌销售于一体的电线电缆骨干企业,公司成立于2016年。 公司拥有国内各大品牌:起帆、远东、上上、江南、胜华等。     主要产品有:高低压电力电缆、橡套电缆、控制电缆、架空绝缘电缆、塑胶电缆、电子计算机电缆、通讯电缆、...