正则表达式 (Regular Expressions)

 

常用实例 (朱晓敏 [2012] EmEditor) 2

正则表达式 (MS Office FrontPage 2003 随机帮助). 4

Regular Expressions (UltraEdit 16 Help) 7

正则表达式应用 (EditPlus 2.12 使用技巧集萃) 10


 

常用实例 (朱晓敏 [2012] EmEditor中所用)

_\u[N|T|R|L|C|P|V|A|D|S|B|P|O|M|E|G|J|$]*

       查找中英所有赋码。

 

^[  \t]*\n

       这个正则表达式代表所有的空行,指含有零个或零个以上空格或制表符、以换行符结尾、不含其它字符的行。

 

(^|(?<=中国)).*?(?=中国|$)

       用正则表达式匹配特定字符串外的所有字符。指除“中国”外的所有其它字符,类似于反选功能。

^[  \t]+

       查找以上字符,并替换为空,可删除行首空白(包括全半角空格和制表符)。

 

[  \t]+$

       查找以上字符,并替换为空,可删除行末空白(包括全半角空格和制表符)。

 

^[  \t]+|[  \t]+$

       查找以上正则表达式,并替换为空,可删除行首和行末所有空白(包括全半角空格和制表符)。9FA5

 

[\u4E00-\u9FA5][-]

       匹配中文字符。评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

 

[^\x00-\xff]

       匹配双字节字符(包括汉字在内)。评注:可以用来计算字符串的长度(一个双字节字符长度计2ASCII字符计1

 

\n\s*\r

       匹配空白行的正则表达式。评注:可以用来删除空白行,我觉得\n[\s\t]*$更好)。

 

< (\S*?)[^>]*>.*?|< .*? />

       匹配HTML标记的正则表达式。评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

 

^\s*|\s*$

       匹配首尾空白字符的正则表达式。评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

 

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

       匹配Email地址的正则表达式。评注:表单验证时很实用。

 

[a-zA-z]+://[^\s]*

       匹配网址url的正则表达式。评注:网上流传的版本功能很有限,上面这个基本可以满足需求。

 

^[a-zA-Z][a-zA-Z0-9_]{4,15}$

       匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)。评注:表单验证时很实用。

 

\d{3}-\d{8}|\d{4}-\d{7}

       匹配国内电话号码。评注:匹配形式如 0511-4405222 021-87888822

 

[1-9][0-9]{4,}

       匹配腾讯QQ号。评注:腾讯QQ号从10000开始

 

[1-9]\d{5}(?!\d)

       匹配中国邮政编码。评注:中国邮政编码为6位数字

 

\d{15}|\d{18}

       匹配身份证。评注:中国的身份证为15位或18

 

\d+\.\d+\.\d+\.\d+

       匹配IP地址。评注:提取IP地址时有用。

 

匹配特定数字:

^[1-9]\d*$                                                             匹配正整数

^-[1-9]\d*$                                                            匹配负整数

^-?[1-9]\d*$                                                          匹配整数

^[1-9]\d*|0$                                                           匹配非负整数(正整数 + 0

^-[1-9]\d*|0$                                                         匹配非正整数(负整数 + 0

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$                                 匹配正浮点数

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$                             匹配负浮点数

^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$               匹配浮点数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$                    匹配非负浮点数(正浮点数 + 0

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$              匹配非正浮点数(负浮点数 + 0

       评注:处理大量数据时有用,具体应用时注意修正

 

匹配特定字符串

^[A-Za-z]+$                                                          匹配由26个英文字母组成的字符串

^[A-Z]+$                                                               匹配由26个英文字母的大写组成的字符串

^[a-z]+$                                                                匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$                                                     匹配由数字和26个英文字母组成的字符串

^\w+$                                                                    匹配由数字、26个英文字母或下划线组成的字符串

^.*John.*$                                                            匹配包括“John”的整行。

 

正则表达式 (MS Office FrontPage 2003 随机帮助)

通过使用正则表达式,可以在 Microsoft FrontPage 中执行繁复的查找和替换操作。正则表达式是在搜索文本或代码的过程中,说明要查找的一个或多个字符串范式,它由普通字符和特殊字符组成。如果您不知道所要查找的确切文本或代码,或者如果您正在查找文本或代码字符串的多种类似情况时,可以使用正则表达式。

若要使用正则表达式,请打开 FrontPage 中的“查找和替换”对话框,选择“正则表达式”复选框,并在“查找内容”框中键入一个正则表达式范式。通过“正则表达式”箭头,可以访问部分常用语法字符。

在搜索中使用正则表达式时,特定的规则将控制哪些字符组合执行哪些特定的匹配操作。每种正则表达式(或正则表达式组合)都要称为语法。可以在一个语法中使用多个正则表达式以精确匹配您所要搜索的目标。

下表说明了 FrontPage 的正则表达式和相关的语法。

表达式

 

语法说明

任何字符

.

作为通配符,可匹配除换行符 (\n) 以外的任何单个打印或非打印字符。

例如,正则表达式c.t可匹配 catc tcot 等字符串,但不匹配 cost。本例中,句号 (.) 是一个代表单个字符的通配符。它出现在字母 'c' 't' 之间,因此,字符 'c' 't' 之间的任何单个字符都与表达式匹配——即使是空格也一样。

最多——零个或多个

*

匹配此表达式前一字符的零次或多次出现,可匹配尽可能多的字符。

正则表达式 .* 匹配一个字符的零次或多次出现。

例如,正则表达式 b.*k 可以匹配 bookbackblackblank buck。本例中,我们将句号 (.) 与星号 (*) 组合为一个语法。句号 (.) 后面紧接着星号 (*) 表达式。星号 (*) 匹配 'b' 'k' 间任何字符的零次或多次出现。句号 (.) 'b' 'k' 之间字符的通配符。本例中,这表示在 'b' 'k' 间可以重复出现任何字符。

最多——一个或多个

+

匹配此表达式前一字符的一次或多次出现,可匹配尽可能多的字符。

正则表达式 .* 匹配一个字符的一次或多次出现。

例如,正则表达式 bo+. 可以匹配 bobbook boot。本例中,我们将句号 (.) 与加号 (+) 组合为一个语法。加号 (+) 表达式后面紧接着句号 (.)。加号 (+) 匹配字母 'o' 的一次或多次出现。句号 (.) 是每个单词最后一个字符的通配符,在本例中为 'b''k' 't'

最少——零个或多个

@

匹配此表达式前一字符的零次或多次出现,可匹配尽可能少的字符。

正则表达式 .@ 表示匹配一个字符的零次或多次出现。

例如,正则表达式 a.@x 匹配 'abxbxb' 中的 'abx' 'acxcxc' 中的 'acx'。本例中,我们将句号 (.) at (@) 组合为一个语法。句号 (.) 后面紧接着 at (@) 表达式。at (@) 匹配 'a' 'x' 间任何字符零次或多次出现。本例中,句号 (.) 'a' 'x' 之间字符 'b' 'c' 的通配符。

最少——一个或多个

#

匹配此表达式前一字符的一次或多次出现,可匹配尽可能少的字符。

例如,正则表达式 si.#er 匹配 'sicker' 'silkier'。句号 (.) 与井字符 (#) 组合为一个语法。句号 (.) 后面紧接着井字符 (#) 表达式。井字符 (#) 匹配 'si' 'er' 之间任何字符的一次或多次出现。句号 (.) 是通配符,在单词 'sicker' 中代表字符 'c' 'k',在单词 'silkier' 中代表字符 'l''k' 'i'

字符集

[ ]

匹配括号 ([ ]) 内的任意一个字符。可以使用连字号 (-) 指定字符的范围,例如 [a-z]

例如:

·        正则表达式 c[aou]t 可以匹配 catcot cut,但不能匹配 cet cit

·        正则表达式 [0-9] 表示匹配任意一个数字。

·        也可以指定多个字母范围。正则表达式 [A-Za-z] 表示匹配所有大写和小写字母。

 

行首

^

将匹配定位于行首。

例如,正则表达式 ^When in 匹配以“When in”作为开始且出现于行首的任何字符串,例如“When in the course of human events”或“When in town, call me”。然而,此正则表达式不匹配出现于行首的“What and when in the course of human events”。

行尾

$

将匹配定位于行尾。

例如,正则表达式 professional$ 可匹配字符串“He is a professional”,但却不匹配字符串“They are a group of professionals”。

文件开头

^^

将匹配定位于文件开头。仅适用于在源代码或文本文件中搜索文本。

例如,若要匹配文件开头的第一个 HTML 标记,可使用下列正则表达式:^^<html>

文件末尾

$$

将匹配定位于文件末尾。仅适用于在源代码或文本文件中搜索文本。

例如,若要匹配文件末尾的最后一个 HTML 标记(标记后没有空格),可使用下列正则表达式:</html>$$

或者

|

表示在两项间进行选择,即匹配 OR 符号 (|) 前面或后面的表达式。

例如,正则表达式 (him|her) 匹配下列情况:

·        it belongs to him

·        it belongs to her

但它不能匹配“it belongs to them”。

转义特殊字符

\

匹配反斜线 ( \ ) 后面的字符。这样可允许您查找正则表达式语法中使用的字符(如左大括号 ({) 或插字号 (^))或其他一些特殊字符。

例如,可使用 \$ 匹配美元符号 ($) 而不会让正则表达式“定位于行尾”。同样,可使用表达式 \. 匹配句号 (.) 字符而不是任意单个字符(句号 (.) 表达式功能)。

标记的表达式

{}

对与括号内表达式匹配的文本加标记。可以在“查找”表达式中匹配其他处的标记文本或者使用 \N 将标记文本插入“替换”表达式。

例如,假设您要查找连续出现两次的单词。若要搜索,请使用下列表达式:{.#} \1

假设连续出现的单词由一个空格隔开,则需要在右侧大括号与反斜线之间添加一个空格。

本例中,我们将带有大括号 ({}) 的井字符 (#) 与句号 (.) 组合为一个语法。在此表达式中,.# 表示任何连续的字符。由于表达式的此部分括有大括号 ({}),连续的字符可被标记起来并被指定为 \1。此表达式将查找跟随空格的任何连续字符,且其后紧接着完全相同的该字符序列。

N 个标记表达式

\N

在“查找”表达式中,\N 匹配由第 N 个标记表达式指定的文本,其中 N 1 9 的数字。

在“替换”表达式中,\N 插入由第 N 个标记表达式指定的文本,其中 N 1 9 的数字。\0 插入整个“查找”表达式指定的文本。

例如,假设要查找连续出现两次的单词,并使用一个单词替换它们。若要搜索,请使用下列表达式:{.#} \l

假设连续出现的单词由一个空格隔开,则需要在右侧大括号与反斜线之间添加一个空格。本例中,我们将带有大括号 ({}) 的井字符 (#) 与句号 (.) 组合为一个语法。

若要替换,请使用下列表达式:\l

\1 表示在查找字符串中第一个大括号部分找到的内容。通过在替换操作中使用 \1,实际上是将连续出现两次的单词替换为一个单词。

组表达式

( )

标记子表达式的开始和结束。

子表达式是包含在括号 ( ) 中的正则表达式,例如下列表达式:(ha)+。本例中,我们将带有括号组合 ( ) 的加号 (+) 组合为一个语法。此子表达式为 (ha),因为它包含在括号 ( ) 中。当您添加加号 (+) 时,该表达式可以查找重复的字母对。加号 (+) 表示重复出现一次或多次的 'ha'

此表达式匹配下列情形:'haha' 'hahaha'

防止匹配

~x

x 出现在表达式的该位置时会防止匹配。

例如,正则表达式 real~(ity) 匹配 "realty" "really" 中的 "real",但却不匹配 "reality" 中的 "real"

换行符

\n

匹配“代码”视图中的换行符或“设计”视图中的 <br>

语法 (\n) 是匹配所有换行符的简便方法。

制表符

\t

匹配单个制表符。

例如,如果要查找所有位于行首的制表符,可使用下列正则表达式:

^\t+

本例中,我们将带有制表符 (\t) 的插字符 (^) 与加号 (+) 组合为一个语法。插字符 (^) 位于单个制表符字符表达式之前,用于匹配位于行首的所有制表符。加号 (+) 表示匹配一个或多个制表符字符。

任何一个不属于该集合的字符

[^]

匹配任何一个不属于插字号 (^) 后面的字符集的字符。

例如,若要匹配范围之外的任何字符,可使用插字号 (^) 作为左侧中括号后面的第一个字符。表达式 [^269A-Z] 匹配除 269 和任何大写字母之外的所有字符。

重复表达式

^n

匹配插字号 (^) 前面的表达式的 n 次出现。

例如,若 n 4,表达式 [0-9]^4 匹配任何 4 位数序列。在本例中,我们将字符集 ([ ]) 语法与重复 (^n) 语法组合以展示一个正则表达式的实用方法。

字母数字字符

:a

匹配表达式 [a-zA-Z0-9]

可以使用表达式 [a-zA-Z0-9] 匹配出现一次的字母(大写或小写)或数字。也称为字母数字序列。可使用简写表达式 :a 代替 [a-zA-Z0-9]

空格

:b

匹配代码或文本中的空格。

例如,若要匹配行首的单个空格字符,可使用下列正则表达式:^:b

字母字符

:c

匹配表达式 [a-zA-Z]。使用此表达式可匹配所有大写或小写字母。

可以使用简写表达式 :c 代替所有 [a-zA-Z]

十进制数

:d

匹配表达式 [0-9]。此表达式可匹配任何数字。

例如,假设您需要在文本文件中搜索社会福利号。美国的社会福利号的格式为 999-99-9999:d^3-:d^2-:d^4 [0-9]^3-[0-9]^2-[0-9]^4](使用 [0-9] 表示)可返回相同结果。

可使用简写表达式 :d 代替所有 [0-9]

十六进制数

:h

匹配表达式 [0-9a-fA-F]+

使用此表达式可匹配由 'A' 'F' 间的大写或小写字母和任意数字组成的十六进制数。

例如,假设网站中的网页拥有多种不同的背景颜色,而您要将这些网页的颜色更改为空白(如 000000)。但是,您不知道现有颜色值的十六进制。使用下列正则表达式可查找所有现有十六进制值:

\#:h

可以使用 [0-9a-fA-F] 搜索,但在本例中我们将反斜线 (\) 和带有十六进制数字 (:h) 语法组合在一起。\# 匹配非表达式井字符 (#),而 :h 匹配任何十六进制字符序列。

若要替换现有十六进制数值,可键入所需背景颜色的十六进制数值: 000000

标识符

:i

匹配表达式 [a-zA-Z_$][a-zA-Z0-9_$]*

处理代码时,如果需要匹配所有程序标识符,则可使用简写表达式 :i ,而无需键入上述冗长的表达式。

有理数

:n

匹配表达式 ([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)|([0-9]+)

如果需要匹配包含小数点的整个数值,可使用简写表达式 :n,而无需键入上述冗长的表达式。

引起的字符串

:q

匹配表达式 ("[~"]*")|('[~']*')

如果需要匹配文档的所有引号,可使用简写表达式 :q,而无需键入上述冗长的表达式。

字母字符串

:w

匹配表达式 [a-zA-Z]+

此语法是一种可匹配一个或多个大写或小写字母字符的简便方法。

十进制整数

:z

匹配表达式 [0-9]+

此语法是一种可匹配任何整数的简便方法。

 

Regular Expressions (UltraEdit 16 Help)

UltraEdit allows for Regular Expressions in many of its search and replace functions listed under the Search Menu.

Regular expressions allow more complex search and replace functions to be performed in a single operation.

There are two possible sets of legacy syntax that may be used. The first table below shows the original UltraEdit syntax used in earlier versions of UltraEdit. The second table shows the optional "Unix" style regular expressions. This may be enabled from the Configuration Section.

Regular Expressions (UltraEdit Syntax):

Symbol

Function

%

Matches the start of line - Indicates the search string must be at the beginning of a line but does not include any line terminator characters in the resulting string selected.

$

Matches the end of line - Indicates the search string must be at the end of line but does not include any line terminator characters in the resulting string selected.

?

Matches any single character except newline.

*

Matches any number of occurrences of any character except newline.

+

Matches one or more of the preceding character/expression. At least one occurrence of the character must be found. Does not match repeated newlines.

++

Matches the preceding character/expression zero or more times. Does not match repeated newlines.

^b

Matches a page break.

^p

Matches a newline (CR/LF) (paragraph) (DOS Files)

^r

Matches a newline (CR Only) (paragraph) (MAC Files)

^n

Matches a newline (LF Only) (paragraph) (UNIX Files)

^t

Matches a tab character

[xyz]

A character set. Matches any characters between brackets.

[~xyz]

A negative character set. Matches any characters NOT between brackets including newline characters.

^{ A^}^{B^}

Matches expression A OR B

^

Overrides the following regular expression character

^(...^)

Brackets or tags an expression to use in the replace command. A regular expression may have up to 9 tagged expressions, numbered according to their order in the regular expression.

The corresponding replacement expression is ^x, for x in the range 1-9. Example: If ^( h*o^) ^( f*s^) matches "hello folks", ^2 ^1 would replace it with "folks hello".

Note - ^ refers to the character '^' NOT Control Key + value.

Examples:

m?n matches "man", "men", "min" but not "moon".

t*t matches "test", "tonight" and "tea time" (the "tea t" portion) but not "tea

time" (newline between "tea " and "time").

Te+st matches "test", " teest", " teeeest" etc. but does not match " tst".

[ aeiou] matches every lowercase vowel

[,.?] matches a literal ",", "." or "?".

[0-9a-z] matches any digit, or lowercase letter

[~0-9] matches any character except a digit (~ means NOT the following)

You may search for an expression A or B as follows:

"^{ John^}^{Tom^}"

This will search for an occurrence of John or Tom. There should be nothing between the two expressions.

You may combine A or B and C or D in the same search as follows:

"^{ John^}^{Tom^} ^{ Smith^}^{Jones^}"

This will search for John or Tom followed by Smith or Jones.

The table below shows the syntax for the "Unix" style regular expressions.

Regular Expressions (Unix Syntax):

Symbol

Function

\

Indicates the next character has a special meaning. "n" on it's own matches the character "n". "\n" matches a linefeed or newline character. See examples below (\d, \f, \n etc).

^

Matches/anchors the beginning of line.

$

Matches/anchors the end of line.

*

Matches the preceding character zero or more times.

+

Matches the preceding character one or more times. Does not match repeated newlines.

.

Matches any single character except a newline character. Does not match repeated newlines.

(expression)

Brackets or tags an expression to use in the replace command. A regular expression may have up to 9 tagged expressions, numbered according to their order in the regular expression.

The corresponding replacement expression is \x, for x in the range 1-9. Example: If (h.*o) (f.*s) matches "hello folks", \2 \1 would replace it with "folks hello".

[xyz]

A character set. Matches any characters between brackets.

[^xyz]

A negative character set. Matches any characters NOT between brackets including newline characters.

\d

Matches a digit character. Equivalent to [0-9].

\D

Matches a nondigit character. Equivalent to [^0-9].

\f

Matches a form-feed character.

\n

Matches a linefeed character.

\r

Matches a carriage return character.

\s

Matches any whitespace including space, tab, form-feed, etc but not newline.

\S

Matches any non-whitespace character but not newline.

\t

Matches a tab character.

\v

Matches a vertical tab character.

\w

Matches any word character including underscore.

\W

Matches any nonword character.

\p

Matches CR/LF (same as \ r\n) to match a DOS line terminator.

Note - ^ refers to the character '^' NOT Control Key + value.

Examples:

m.n matches "man", "men", "min" but not "moon".

Te+st matches "test", " teest", " teeeest" etc. BUT NOT " tst".

Te*st matches "test", " teest", " teeeest" etc. AND " tst".

[ aeiou] matches every lowercase vowel

[,.?] matches a literal ",", "." or "?".

[0-9a-z] matches any digit, or lowercase letter

[^0-9] matches any character except a digit (^ means NOT the following)

You may search for an expression A or B as follows:

"( John|Tom)"

This will search for an occurrence of John or Tom. There should be nothing between the two expressions.

You may combine A or B and C or D in the same search as follows:

"( John|Tom) ( Smith|Jones)"

This will search for John or Tom followed by Smith or Jones.

If Regular Expressions is not selected (i.e. no usage of Regular Expressions is active) for a find/replace the following special characters are also valid in the Find and Replace fields:

Symbol

Function

^^

Matches a "^" character

^s

Is substituted with the selected (highlighted) text of the active file window.

^c

Is substituted with the contents of the clipboard.

^b

Matches a page break

^p

Matches a newline (CR/LF) (paragraph) (DOS Files)

^r

Matches a newline (CR Only) (paragraph) (MAC Files)

^n

Matches a newline (LF Only) (paragraph) (UNIX Files)

^t

Matches a tab character

Note - ^ refers to the character '^' NOT Control Key + value.

For information regarding Perl Compatible Regular Expressions please click here.

 

正则表达式应用 (EditPlus 2.12 使用技巧集萃)

Liangjh@CCF

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

技巧中,在编译器集成例子中参照了部分官方的文献。有几篇是从网上搜集来的,这里我注明了来源或原始作者。如果你是相应作者,不希望文章放在这里,请通知我,我会及时 删掉。

 

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

文章或者技巧及原始作者或出处:

 

正则表达式类

1】 正则表达式应用——替换指定内容到行尾

2】 正则表达式应用——数字替换----------------------------Microshaoft,jiuk2k

3】 正则表达式应用——删除每一行行尾的指定字符

4】 正则表达式应用——替换带有半角括号的多行

5】 正则表达式应用——删除空行----------------------------江德华

 

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]”表示匹配09之间的任何特例,同样“[a-z]”就表示匹配az之间的任何特例

上面重复使用了“[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】正则表达式应用——替换带有半角括号的多行

几百个网页中都有下面一段代码:

<SCRIPT LANGUAGE="JavaScript1.1">

<!--

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

//-->

</SCRIPT>

我想把它们都去掉,可是找了很多search & replace的软件,都是只能对“一行”进行操作。

 

EditPlus 打开几百个网页文件还是比较顺畅的,所以完全可以胜任这个工作。

具体解决方法,在 Editplus 中使用正则表达式,由于“(”、“)”被用做预设表达式(或者可以称作子表达式)的标志,所以查找

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

时会提示查找不到,所以也就无法进行替换了,这时可以把“(”、“)”使用任意字符标记替代,即半角句号:“.”。替换内容为

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

在替换对话框启用“正则表达式”选项,这时就可以完成替换了

 

5】正则表达式应用——删除空行

启动EditPlus,打开待处理的文本类型文件。

①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围”中的“当前文件”,表明对当前文件操作。

②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。

③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。

直接在"查找"中输入正则表达式“^[ \t]*\n”,注意\t前有空格符。

1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。

2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。

3)按一下空格键,添加空格符。空格符是空行的一个组成成分。

4)选择“制表符”,添加代表制表符的“\t”。

5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0 次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。

6)选择“换行符”,插入“\n”,表示回车符。

④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。

 

6】软件技巧——键盘记录的注意事项

EditPlus 的键盘记录有些类似于 UltraEdit 的宏操作,不过功能相对单一,录制的文件可编辑性较差。

由于基本无法编辑录制的文件,所以录制的时候为了避免录制失败,推荐纯粹使用键盘操作,以下是比较关键的几个键盘组合:

Ctrl+F = 调出查找对话框

Ctrl+H = 调出替换对话框

Alt+F4 = 关闭作用,比如,关闭查找对话框、关闭替换对话框,等等

其它键盘快捷键在“帮助-快捷键列表”里面可以很容易的查找到,这里就不细说了。

 

7】软件技巧——关闭文档标签的便捷方法

右键单击文档标签工具条,弹出菜单中选择“标签选项”,选中“用鼠标中间的按钮关闭”,这里包括鼠标的滚轮。

 

8】软件技巧——如何去掉 EditPlus 保存文本文件时的添加后缀提示?

如果你使用 EditPlus 进行文本编辑,那么每次创建文本文件,编辑后保存时,尽管文件类型下拉列表中显示的是文本文件, EditPlus 还是询问你是否添加".txt"后缀,是不是很烦?

解决方法:

① 在程序目录建立一个空的文件“template.txt

② “工具-参数设置-模板”里面,单击“添加”按钮添加模板,“菜单文本”这里输入“Text”,浏览“template.txt”,之后确定即可

③ “文件-新建-text”,就可以建立一个空的文本文件,保存时,这个文件自动带有扩展名".txt",也就避免了令人头疼的确认

④ 模板设置文件名称为“template.ini”,如果和主程序同一路径,可以使用相对路径

罗嗦了点,不过管用

要自动创建带有某种后缀的文件,方法同上。

 

9】软件技巧——提示找不到语法文件 *.stx 的解决办法

原因多为设置的语法文件不存在或者是路径设置不对。这是因为 EditPlus 的语法是设置文件采用的是绝对路径,而在你设置了语法文件之后,再把程序复制到其它目录,因而导致 EditPlus 无法找到该语法文件。

解决办法:

在主程序目录里,找到 Setting.ini 这是 EditPlus 存放语法的文件

查找后缀为“.stx”、“acp”的文本内容,或者查找带有驱动器符号的行,比如

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

那么,就把”C:\Program Files\EditPlus 2\“替换成你当前软件的路径。

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

 

10】软件技巧——设置editplus支持其它文字,如韩文

editplus里打开文件,出来打开文件对话框;然后点击“转换器”后面的那个省略号,会出来自定义转换器对话框;在右边选择你需要的编码方式,添加到左边,然后点确定;最后在下拉框中选择需要的编码方式,然后打开文件即可。

 

11】软件技巧——FTP 上传的设置

“文件->远程操作->FTP 上传”在“设置”选项卡中设置好参数(“子目录”前面应该加“/”如“/web/”),点击“确定”回到“FTP 上传”选项卡,然后点击“上传”即可;“批量上传”的设置类似。

 

12】软件技巧——如何禁用备份文件功能?

在“参数选择”的文件选项页,禁用“'保存时自动创建备份文件”选项

 

13】软件技巧——添加语法文件、自动完成文件、以及剪辑库文件

要添加 *.STX(语法文件)或 *.ACP(自动完成文件):

1. 选择“参数选择→语法”

2. 单击“添加”按钮,命名,在“扩展名”部分输入对应扩展名(不带“.”)

3. 浏览/输入 STX(语法文件部分) 以及 ACP(自动完成文件部分)。

添加剪辑库文件(*.CTL

复制相应 *.CTL 文件到软件安装目录,重新启动 EditPlus ,则系统自动识别。

 

14】工具集成——编译器集成例子(JavaBorland C++Visual C++Inno Setupnsis

在“工具→参数选择→用户工具”选项页设置,设置步骤

① 设置组名称,这里也可以不设置

② 单击“添加工具→应用程序”按钮并进行如下设置

③ 各种类似"$(FilePath)"的参数可以在文本框右侧的箭头下拉菜单中获取,具体含义如下

参数 描述

$(FilePath) 文件路径(文件全名,含目录和文件名)

$(FileDir) 文件目录(不带文件名)

$(FileName) 文件名(不带目录)

$(FileNameNoExt) 不带扩展名的文件名(不带目录)

$(FileExt) 扩展名(当前文件)

$(ProjectName) 工程名称(当前工程名)

$(CurLine) 当前行号(光标位置处的行号)

$(CurCol) 当前列号(光标位置处的列号)

$(CurSel) 当前文本(插入当前选定文本)

$(CurWord) 当前单词(插入当前单词)

$(WindowList) 显示当前窗口列表并选择特定文件

 

 

例子 1. Java 编译器

 

菜单文本:Java 编译器

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

参数:"$(FilePath)"

初始目录:$(FileDir)

捕获输出:开启

 

要运行已编译的 Java 类文件,你可以进行如下设置:

菜单文本:Java

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

参数:$(FileNameNoExt)

初始目录:$(FileDir)

“命令”部分应当替换为实际的 Java 解释器的路径。

 

例子 2. Borland C++

 

菜单文本:Borland C

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

参数:-Ic:\bc\include -Lc:\bc\lib -n$(FileDir) $(FilePath)

初始目录:c:\bc\bin

捕获输出:开启

 

例子 3. Visual C++

 

菜单文本:Visual C++

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

参数:"$(FilePath)"

初始目录:$(FileDir)

捕获输出:开启

 

例子 4. Inno Setup

菜单文本:编译 Inno

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

参数:/cc $(FileName)

初始目录:$(FileDir)

捕获输出:开启

 

例子 5. nsis

菜单文本:编译 nsis

命令:C:\NSIS\makensis.exe

参数:$(FileName)

初始目录:$(FileDir)

捕获输出:开启

 

例子 6. C#

菜单文本:编译 C#

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

参数:$(FileName)

初始目录:$(FileDir)

捕获输出:开启

 

在上面设置中,在命令部分,必须使用系统中各自编译器的绝对路径。

 

设置完毕后,你可以在“工具”菜单运行对应工具了,运行结果会显示在底部的输出窗口,你也可以通过快捷键(Ctrl + 0-9) 运行,或者是通过“用户工具栏”的快捷按钮运行。

 

要运行已编译的 *.exe 文件,你可以进行如下设置(此时可执行文件需要和编译文件同名):

菜单文本:Run

命令:$(FileNameNoExt)

参数:

初始目录:$(FileDir)

 

15】工具集成—— 让Editplus调试PHP程序

1:打开Editplus,选择"工具->配置用户工具..."菜单。

2:在弹出的窗口中选择"添加工具->应用程序",给新程序起一个好记的名字,比如这里我们用"Debug PHP","菜单文本"中输入"Debug PHP"。点击"命令行"右边的按钮,找到你的php.exe所在的路径,例如这里是"c:\php\php.exe"。再点击"参数"右边的下拉按钮选择"文件路径",最后再把"捕获输出"前面的复选框选上。

3:现在测试一下,新建一个php文件,按快捷键Ctrl+1可以激活刚才我们设置的工具(如果你设置了多个工具,快捷键可能会有所不同),现在你可以看到它已经能正常工作了。但是还有一点不太理想:如果你的PHP程序出错,在输出窗口会提示你第几行出错 ,单击这一行提示,Editplus老是提示你找不到某某文件,是否新建。接下下我们要修正这个功能。

4:打开刚才用户工具设置窗口,找到刚才设置的"Debug PHP"工具。点击"捕获输出"复选框旁边的"输出模式"按钮,会弹出一个定义输出模式的窗体,把"使用默认输出模式"前面的复选框去掉, "正则表达式"这一项的文本框中输入" ^.+ in (.+) line ([0-9]+) "(不包括引号),细心的朋友可能会发现,这里使用的也正则表达式的语法。然后,在下面的"文件名"下拉菜单中选择"预设表达式 1",即上边正则表达式中的第一个参数,""下拉菜单项选择"预设表达式 2"""下拉项保持为空。然后保存设置。

5:好了,现在再来试一下吧,双击出错的行数,Editplus就会自动激活出错文件,并把光标定位到出错行,是不是特别方便呢?!

现在,Editplus经过我们的"改造",已经可以即时的调试PHP文件了,虽然还不是"可视化"界面的,但对于一些平常的小程序来查错还是非常好用的。Editplus真是不款不可多得的好工具,如果你有什么使用技巧,不要忘了大家一起分享哦。^O^

 

如果不能切换错误行号,请尝试作如下修改: (by aukw

1.php.ini html_errors = Off打开

//如果你不打开,3.中的表达式要修改

2.参数改成:-q -f "$(FilePath)"

//不加"符号的话文件名有空格的文件调试失败。。

//-q不输出html头信息,你去掉也行,不过调试时候你一般用不到那些header信息

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

//如果还是不行,请注意调试结果,自己修改表达式来取出文件名和行号

 

16】工具集成——打造 PHP 调试环境()

1: 把剪辑库定位在 PHP4 Functions 上就可以在编辑时, 利用[插入]->[匹配剪辑]命令,就可以自动完成末输入完整的 PHP 函数(或直接按 F2 )

2: 类似上面,在选择部分文字后,同样可以自动完成。( F2)

3: [参数选择]->[设置和语法]->PHP->自动完成, 选择目录下的 php.acp 文件,你可以定制自己的自动完成方式.

4: 想要即时预览文件,可在[参数选择]->[工具]->WEB 服务器中添加本地目录,(注意不要加 http:// , 应是一个有效的站点)

    如: 主机->localhost/php | 根目录->D:\php

主机->localhost/asp | 根目录->D:\asp

主机->localhost/cgi | 根目录->D:\cgi

完成设置后只要脚本文件位于这些目录下(子目录也没问题), 就能够正确解释.

5: 各种语法和模板文件可以在 www.editplus.com 获得,可根据需要选用和编辑。

6: Ctrl+F11 可显示当前文件中的函数列表.

7: 添加各种用户工具.:

启动MYSQL服务器管理工具->C:\mysql\bin\winmysqladmin.exe

启动Apache服务器->C:\Apache\bin\Apache.exe -k start

启动Apache服务器->C:\Apache\bin\Apache.exe -k stop (shutdown)

8: DBG 附带有一个 prof_results.php 文件,可剖析 PHP 程序的性能.

虽不是真正的调试器,但已经够了.

OK! 经过改造后,是不是有点象一个 IDE  什么?还差点,没有即时帮助...看我的,再来:

9: php_manual_en.chm (最好是扩展帮助手册)加入到用户工具中, 当遇到需要参考的关键字时, 把光标定位其上, 按下快捷键 Ctrl+1, 看到了吗.

在输入时有想不起来的函数名时, 先按照第 1 条的方法调出函数, 然后...怎么样?

 

以上有的是对于调试工具的设置,由于此类工具比较多,大家设置时参考以上的基本就差不多了,所以就不过多的列举了。

 

17】在 WINPE 中集成 EDITPLUS

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

 

默认位置为 \programs\editplus\

默认系统位置为光盘的 i386 目录

 

i386/system32 autorun.bat 中添加外壳集成(系统右键)

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

regsvr32 /s \programs\editplus\EPPSHELL.DLL

 

复制editplus安装包里面的文件到programs\editplus\,注意,如果有setting.ini,删掉该文件在nu2menu里面加入,可以根据需要安排位于特定菜单条目下

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

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