存档在 2015年8月

怎样安装AWStats

2015年8月31日

规划:AWStats + Cronolog + Jawstats

Awstats:一款基于 Perl 的 WEB 日志分析工具
JAWStats:一款基于 PHP 的统计套件,旨在为 Awstats 提供更为精美图形界面。
Cronolog:指定定期日志切割,而Awstats 支持基于日期变化的动态日志文件。

一. 安装和配置 Awstats

官网:http://www.awstats.org/

部署Perl环境:

要求Perl 5.00503或者更高。

参考:https://amon.org/perl

安装Awstats:

最新稳定版本:7.5 ( 2016-04-29 )

wget https://prdownloads.sourceforge.net/awstats/awstats-7.5.zip
unzip awstats-7.5.zip && mv awstats-7.5 /usr/local/awstats
chown -R root:root /usr/local/awstats

2. AWStats配置文件(awstats.mysite.conf)的常用设置

首先需要明确几个文件的位置:

工具文件:/usr/local/awstats/tools/awstats_configure.pl
日志文件:/usr/local/apache2/htdocs/logs/aray.org_http_access.log
配置文件:/etc/awstats/awstats.aray.org.conf

生成每个网站的配置文件:

使用 awstats_configure.pl 向导工具:

cd /usr/local/awstats/tools
./awstats_configure.pl

1. 输入配置文件名称,一般输入需要统计的网站的域名。
2. 配置文件使用默认路径 /etc/awstats
3. 按回车完成配置文件的创建

生成配置文件 /etc/awstats/awstats.aray.org.conf 。

指定日志文件:

第 50 行。

有两种常见的形式:

A. 指定单个文件

LogFile="/usr/local/apache2/htdocs/logs/aray.org_http_access.log"

B. 指定多个文件

需要使用 usr/local/awstats/tools/logresolvemerge.pl 脚本指定需要的所有日志文件,然后在文本最后加入一个字符 “|”,表示合并所有文件结果。

LogFile="usr/local/awstats/tools/logresolvemerge.pl /usr/local/apache2/htdocs/logs/a.access.log /usr/local/apache2/htdocs/logs/b.access.log|"

配置日志格式:

第 62 行。

系统预置了四种格式供选择:

#  W - For a web log file
#  S - For a streaming log file
#  M - For a mail log file
#  F - For a ftp log file
LogFormat=W

确认Apache日志格式为 combined :

111.22.33.44 - - [10/Jan/2001:02:14:14 +0200] "GET / HTTP/1.1" 200 1234 "http://www.fromserver.com/from.htm" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0                                                                                                                     )"

编辑 /usr/local/apache2/conf/httpd-vhosts.conf :

CustomLog /usr/local/apache2/htdocs/logs/aray.org_http_access.log combined

设置日志按天的截断规则

日志截断需要安装cronolog工具。

下载:http://down1.chinaunix.net/distfiles/cronolog-1.6.2.tar.gz

wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar zxvf cronolog-1.6.2.tar.gz && cd cronolog-1.6.2
./configure
make && make install

将日志设置成按天截断:

CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/access_log.%Y%m%d" combined

这样日志会形如:

logs/access_log.20030326

如果日志是压缩格式,可以使用动态解压缩统计:

gzip -d < /home/apache/logs/access_log.%YYYY-24%MM-24%DD-24.gz | 

指定计算结果目录:

第 220 行。

先创建存放数据的目录:

mkdir -p /var/lib/awstats

再在配置文件中指定:

DirData="/var/lib/awstats"

网页端刷新数据:

第 256 行。

允许在网页端刷新数据:

# modify
AllowToUpdateStatsFromBrowser=1

解决中文乱码:

第 1331 行。

如果安装AWS后搜索处中文乱码。

LoadPlugin="decodeutfkeys"

开启地理位置支持:

第 1367 行。

需要安装并开启GEO支持:

yum install GeoIP GeoIP-data GeoIP-devel perl-Geo-IP -y

安装完毕后在配置文件中设置:

# uncomment
LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"

或者选择国产的qqhostinfo插件:

参考:http://www.l-yp.com/1103
下载:http://pan.baidu.com/share/link?shareid=162768&uk=3120992964
下载:http://download.csdn.net/detail/debugcs/4360307

解压出来有三个文件:qqwry.pl qqhostinfo.pm qqwry.dat ,将三个文件放入 /usr/local/awstats/plugins 目录下。

编辑 qqwry.pl ,修改为自己的目录路径:

my $ipfile="/usr/local/awstats/plugins/qqwry.dat";

编辑 qqhostinfo.pm ,修改为自己的目录路径:

push @INC, "/usr/local/awstats/plugins";
require "/usr/local/awstats/plugins/qqwry.pl";

修改配置文件:

加入:

LoadPlugin="hostinfo"
LoadPlugin="qqhostinfo"

生成统计数据:

有两种方式:

A:为指定的网站生成数据。

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=amon.org 

B:为所有网站生成数据

/usr/local/awstats/tools/awstats_updateall.pl now

3. 配置Apache运行cgi

编辑 /usr/local/apache2/conf/extra/httpd-vhosts.conf :

<virtualhost 123.123.123.123:80>

	ServerName stats.aray.org

	DocumentRoot /usr/local/awstats/wwwroot/

	Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
	Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
	Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"

	ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

	<Directory "/usr/local/awstats/wwwroot">
		Options Indexes FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>

</VirtualHost>

即可打开网址:https://aray.org/awstats/awstats.pl

4. 配置 Awstats 自动运行

每小时更新一次:

crontab -e
0 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

每天半夜12点01分更新一次:

crontab -e
1 0 * * * /usr/local/awstats/tools/awstats_updateall.pl now

或者,在/etc/下有以下几个目录:

cron.daily
cron.hourly
cron.monthly
cron.weekly

在“/etc/cron.hourly/”目录中建立了一个“awstats.sh”文件,内容如下:

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.XXXX.net

现在每小时就可以更新一次统计信息。还可以在/etc/crontab里写。

如果需要更新多个统计日志,每个需要统计的站点写一行,修改-config=XXXX为要统计的站点的配置文件:

perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -lang=cn -config=demo
perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -lang=cn -config=demo1
perl /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -lang=cn -config=demo2

二. 安装和配置 JAWStats

JAWStats 是基于 Awstats 统计数据的,但其界面更为强悍,有了JAWStats 你甚至可以抛弃第三方统计了。

1. 下载与安装

wget http://static.jawstats.com/src/jawstats-0.7beta.tar.gz
mkdir /var/www/stats/
tar -zxf jawstats-0.7beta.tar.gz -C /var/www/stats/
cd /var/www/stats/
cp config.dist.php config.php

2. 修改配置文件

官方配置说明见:http://www.jawstats.com/documentation

jawstats 是支持多站点的,每个 $aConfig 对应一个站点,并可以自由切换。

<?php // core config parameters $sDefaultLanguage = "zh-cn"; // 设置默认语言 $sConfigDefaultView = "thismonth.all"; $bConfigChangeSites = false; //是否可以更换站点 $bConfigUpdateSites = false; //是否可以更新统计数据 $sUpdateSiteFilename = "xml_update.php"; // individual site configuration $aConfig["site1"] = array( // site1 网站域名(注意不能乱填) "statspath" => "/var/lib/awstats/", //awstats 统计数据目录
    "updatepath"  => "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl/", //用于更新统计数据
    "siteurl"     => "http://amon.org", //点击首页标题后会前往这个地址
    "sitename"    => "amon.org", //首页标题
    "theme"       => "default",
    "fadespeed"   => 250,
    "password"    => "my-1st-password", //更新统计数据需要输入这个密码
    "includes"    => "",
    "language"    => "zh-cn"
  );
?>

3. 安装中文语言包

首先下载 jawstats 多国语言包,解压缩后上传替换 lang 目录。

下载:http://www.jawstats.com/src/languagepack.zip

需要注意的是,你要修改 translations.php 文件的编码为UTF-8,不然全乱码了。
另外修改汉化文件,也是translations.php,不能只修改zh-cn.js文件。

4. 问题

1. 首页空白

打开jawstats根目录下面的index.php,修改报错提示:

error_reporting(0)

修改为:

error_reporting(E_ALL)

进行上述修改后,再次打开jawstats显示空白页的站,发现提示如下:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 96779834 bytes) in /data/web/stats/clsAWStats.php on line 54

发现为php分配的内存不够产生的问题,更改php.ini后如下配置:

memory_limit = 256M

参考:http://www.cssyq.com/rizhi/416908
参考:http://fity.cn/post/389/

但依然有其他和PHP版本升级导致的问题,到此打住,毕竟JawStats是2009年的老程序。直接使用Awstats好了。

参考资料:

https://blog.phpgao.com/centos_awstats
http://www.linuxnote.org/the-awstats-installation-configuration
http://www.awstats.org/docs/awstats_config

http://linux-wiki.cn/wiki/zh-cn/AWStats%2BLighttpd%E9%85%8D%E7%BD%AE
http://88fly.blog.163.com/blog/static/1226803902013842193482/
http://blog.163.com/czg_e/blog/static/46104561201172492750449/
http://www.linuxidc.com/Linux/2012-08/68004.htm
http://www.xuebuyuan.com/102961

http://www.sudu.cn/info/html/edu/20070930/67743
http://sudu.cn/info/19700101/279569
http://vps.zzidc.com/VPSjiaocheng/793
http://windows9834.blog.163.com/blog/static/2734500420102294454988/
http://windows9834.blog.163.com/blog/static/2734500420102194738144/
http://wolfguozi.blog.163.com/blog/static/378277782008891493990/
http://www.ahlinux.com/apache/958

http://huang1983888.blog.163.com/blog/static/242809722012514115614462/

http://www.eygle.com/archives/2004/12/aeoeaawstatsapa
http://www.zzzyk.com/show/36989d3e6f5755eb.htm

站点日志统计分析的好工具——AWStats


http://blog.csdn.net/kumu_linux/article/details/7599222

http://www.chedong.com/tech/awstats
http://www.chedong.com/blog/archives/cat_awstats
http://www.chedong.com/blog/archives/001480

http://blog.chinaunix.net/uid-780780-id-2043590
http://blog.chinaunix.net/uid-780780-id-2043591
http://blog.chinaunix.net/uid-780780-id-2043592
http://blog.chinaunix.net/uid-780780-id-2043593

http://www.itnose.net/st/6652638
http://www.itnose.net/detail/6390365
http://www.itnose.net/detail/508751

http://www.aichengxu.com/view/3176206
http://bbs.chinaunix.net/thread-2037654-1-1

参考:http://www.codesec.net/view/148963
参考:http://www.ibm.com/developerworks/cn/linux/l-cn-awstats-nginx/
参考:http://freemantc.cnblogs.com/archive/2005/11/14/276086
参考:http://www.oschina.net/question/565065_79804 *
参考:http://blog.csdn.net/forest_boy/article/details/6858867 *
参考:http://my.oschina.net/u/190216/blog/156559
参考:http://my.oschina.net/zhouz/blog/213135
参考:http://my.oschina.net/u/2316994/blog/376873
参考:http://my.oschina.net/u/2316994/blog/377096
参考:http://www.oschina.net/question/tag/awstats
参考:http://blog.fity.cn/post/388/

域名停放用到的处理网址提取域名的JS代码

2015年8月31日

域名停放时,需要处理网址提取域名。

JS代码如下:

<script>

no_www_url = document.domain ;

if (no_www_url.substr(0,4) =="www." ) { no_www_url =  no_www_url.substring(4,no_www_url.length) };

document.write("<font size=7 face=georgia,blod color=#000000>"+no_www_url+"</font><br><br><br><br>")
document.write("This domain for sale! send your offer to info (at) vincentliao.com <br>")
</script>

在源码中可以通过 ” + no_www_url + ” 提取域名作为变量。

效果参考:

http://www.forsale.tw
http://www.forsale.tw/index
http://forsale.tw/index

作者:
http://club.domain.cn/forum.php?mod=viewthread&tid=1852516
http://club.domain.cn/forum.php?mod=viewthread&tid=1852516

怎样安装fail2ban防止暴力登录

2015年8月31日

fail2ban的功能就是防止暴力破解:fail2ban scans log files like /var/log/pwdfail or /var/log/apache/error_log and bans IP that makes too many password failures. It updates firewall rules to reject the IP address.

工作原理:通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。注:重启iptables服务的话,所有DORP将重置。

在CentOS中安装fail2ban:

安装:

# yum install fail2ban 

主要文件说明:

# rpm -ql fail2ban
/etc/fail2ban/action.d                   #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf             #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d                     #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf                   #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
/etc/rc.d/init.d/fail2ban                #启动脚本文件

应用实例:

设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。

因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用sshd服务的日志分析,指定动作阀值即可。实例文件及说明如下:

[DEFAULT]               #全局设置
ignoreip = 127.0.0.1       #忽略的IP列表,不受设置限制
bantime  = 600             #屏蔽时间,单位:秒
findtime  = 600             #这个时间段内超过规定次数会被ban掉
maxretry = 3                #最大尝试次数
backend = auto            #日志修改检测机制(gamin、polling和auto这三种)

[sshd]                   #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
enabled  = true             #是否激活此项(true/false)
filter   = sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action   = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件
logpath  = /var/log/secure         #检测的日志文件path
bantime  = 3600
findtime  = 300
maxretry = 3

启动服务:

# service fail2ban start
Starting fail2ban:                                         [确定]

测试:

故意输入错误密码进行测试。。测试发现确实有一定的延迟。设定3次。。在尝试第7次的时候才被加入到DORP列表。

# iptables -L |tail -4
Chain fail2ban-SSH (1 references)
target     prot opt source               destination
DROP       all  --  192.168.7.142        anywhere
RETURN     all  --  anywhere             anywhere

查看fail2ban的日志能够看到相关的信息

2011-12-03 18:24:34,231 fail2ban.actions: WARNING [sshd] Ban 192.168.7.142

参考文档:

http://www.opsers.org/linux-home/security/use-fail2ban-to-prevent-brute-force-ftp-ssh-and-other-services

360网站卫士

2015年8月25日

网址:http://wangzhan.360.cn/

网站卫士是360旗下为网站提供免费加速和防护的云服务平台。为站长免费提供了网站加速,智能高防DNS,防DDOS,防CC,防黑客和网站永久在线等服务。

文本编辑软件EditPlus

2015年8月25日

官网:https://www.editplus.com/
汉化:http://www.cnblogs.com/hanzisearcher/archive/2012/09/14/editplus

汉化包下载及使用方法

1. 到 EditPlus 的官方网站下载并安装原版程序。
2. 下载 EditPlus 最新汉化版。将压缩包里的文件解压出来,覆盖原版程序的可执行文件(editplus.exe)。

32位版:

原版:https://www.editplus.com/ftp.php?n=epp400.exe
汉化:http://pan.baidu.com/s/1nt5KriD

64位版:

原版:https://www.editplus.com/ftp.php?n=epp400_64bit.exe
汉化:http://pan.baidu.com/s/1nt5KriD

打开EditPlus,输入多行数据,快捷键ctrl+h 打开替换窗口,选择“正则表达式”替换

案例:把日期数字中间隔开

如070715,查找”[0-9][0-9]”,替换为“[\0\1\2]”,替换结果是[07][07][15]。

“[0-9]”表示匹配0~9之间的任何特例,上面重复使用了“[0-9]”,表示连续出现的2个数字。“\0”代表第一个“[0-9]”对应的原型,“\1”代表第二个“[0-9]”对应的原型,依此类推。

案例:行首批量添加字符串

查找”^” 替换为“我是行首aaa”

案例:行尾批量添加字符串

查找”\n” 替换为“’bbb我是行尾\n”

案例:删除空白行

^[ \t]*\n

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” 开头的行.
contentnbsp; 其左边的表达式被匹配在一行的结尾. 例如 “econtentquot; 仅仅匹配以 “e” 结尾的行.
() 影响表达式匹配的顺序,并且用作表达式的分组标记.
\ 转义字符. 如果你要使用 “\” 本身, 则应该使用 “\\”.
正则表达式应用——删除空行 ^[ \t]*\n
表达式的分组使用()来标记. 表达式的分组可以被引用为 \0, \1, \2, \3, 等等. \0 表示被匹配的所有字符串. \1 表示被匹配的第一个分组, \2 表示第二个分组, 依此类推. 举例如下.

原文 查找 替换 结果
abc (ab)(c) \0-\1-\2 abc-ab-c
abc a(b)(c) \0-\1-\2 abc-b-c
abc (a)b(c) \0-\1-\2 abc-a-c

【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”
这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下
解决:
在替换对话框中,启用“正则表达式”复选框
在查找内容里面输入“345contentrdquo;
这里“contentrdquo;表示从行尾匹配

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

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

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

网上搜集了些实例

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

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

Expression Description
\t Tab character.
\n New line.
. Matches any character.
| Either expression on its left and right side matches the target string.
For example, “a|b” matches “a” and “b”.
[] Any of the enclosed characters may match the target character.
For example, “[ab]” matches “a” and “b”. “[0-9]” matches any digit.
[^] None of the enclosed characters may match the target character.
For example, “[^ab]” matches all character EXCEPT “a” and “b”.
“[^0-9]” matches any non-digit character.
* Character to the left of asterisk in the expression should match 0 or more times.
For example “be*” matches “b”, “be” and “bee”.
+ Character to the left of plus sign in the expression should match 1 or more times.
For example “be+” matches “be” and “bee” but not “b”.
? Character to the left of question mark in the expression should match 0 or 1 time.
For example “be?” matches “b” and “be” but not “bee”.
^ Expression to the right of ^ matches only when it is at the beginning of line.
For example “^A” matches an “A” that is only at the beginning of line.
$ Expression to the left of $ matches only when it is at the end of line.
For example “e$” matches an “e” that is only at the end of line.
() Affects evaluation order of expression and also used for tagged expression.
\ scape character. If you want to use character “\” itself, you should use “\\”.

例子:

原始串
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.废除,取消”,