EmEditor 正则表达式语法

EmEditor 正则表达式语言基于 Perl 正则表达式语法。

文字

所有字符都是文字除了: “.”, “*”, “?”, “+”, “(“, “)”, “{“, “}”, “[“, “]”, “^”, “$” 和 “”。这些字符代表文字当之前有一个 “” 时。一个文字是一个与它自己相匹配的字符。例如,搜索 “?” 会匹配每一个在文档中的 “?” ,或搜索 “Hello” 会匹配每一个在文档中的 “Hello” 。

元字符

下列表格包含元字符(非文字)的完整列表以及这些元字符在正则表达式中的行为。

把下一个字符标记为一个特殊字符,一个文字,或一个向后引用。例如,’n’ 与字符 “n” 相匹配。而 ‘n’ 代表一个换行符号。序列 ‘\’ 代表 “”,”(” 则与 “(” 相匹配。
^ 匹配输入字符串的开始位置。例如,”^e” 表示任何由 “e” 开头的字符串。
$ 匹配输入字符串的结尾位置。例如,”e$” 表示任何由 “e” 结尾的字符串。
* 匹配之前的字符或子表达式零次或多次。例如,zo* 会匹配 “z” 以及 “zoo”。* 等同于 {0,}。
+ 匹配之前的字符或子表达式一次或多次。例如,’zo+’ 匹配 “zo” 以及 “zoo”,但不匹配 “z”。 + 等同于 {1,}。
? 匹配之前的字符或子表达式零次或一次。例如,”do(es)?” 匹配 “do” 在  “do” 或 “does” 中。? 等同于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不匹配 “Bob” 中的 “o”,但与 “food” 中的两个 o 匹配。
{n,} n 是一个非负整数。匹配至少 n 次。例如,’o{2,}’ 不匹配 “Bob” 中的 “o”,单匹配 “foooood” 中的所有 o。and matches all the o’s in “foooood”. “o{1,}” 等同于  ‘o+’。 ‘o{0,}’ 等同与 ‘o*’。
{n,m} m 和 n 都要是非负整数,n <= m。匹配至少 n 次,最多 m 次。例如,”o{1,3}” 与 “fooooood”中的前三个 o 向匹配。 ‘o{0,1}’ 等同于 ‘o?’。要注意的是你不能在逗号与数字之间加一个空格。
? 当这个字符紧跟着任何其他数量词 (*, +, ?, {n}, {n,}, {n,m}) 时,匹配的模式是非贪婪。一个非贪婪模式尽可能少地与搜索字符串匹配,而默认的贪婪模式则尽可能多地与搜索字符串匹配。例如,字符串 “oooo”,’o+?’ 匹配单一的一个 “o”,而w ‘o+’ 匹配所有 ‘o’。
. 与任何单一字符串匹配。例如,”.e” 匹配任何在 “e” 之前的文字,如 “he”,”we”,或 “me”。 在 EmEditor Professional 中,它匹配搜索正则表达式的附近行文本框中指定范围内的换行当正则表达式 “.” 匹配换行符复选框被勾选。
(pattern) 括号有两个作用: 把一个格式组合到一个子表达式中,以及捕捉生成该匹配的格式。例如,表达式 “(ab)*” 匹配所有字符串 “ababab”。每一个子表达式的匹配被捕捉为一个从左到右编号的向后引用(如下)。要匹配括号字符,用 ‘(‘ 或 ‘)’。
(?<name>pattern) 捕获与 “pattern” 匹配的字符串到 “name” 群组中。
1 – 9 指定一个向后引用 – 一个向后引用是上一个被匹配的子表达式的引用。引用的内容是与子表达式相匹配的内容,而不是表达式本身。一个向后引用由转义符 “” 加一个 “1” 到 “9” 的数字组成。”1″ 指的是第一个子表达式,”2″ 是第 2 个,以此类推。例如,”(a)1″ 会捕捉 “a” 为第一个向后引用,并匹配任何 “aa” 文本。你还可以使用向后引用功能当你在搜索菜单下选择替换功能时。用正则表达式来定位一个文本格式,与之相匹配的文本能被一个指定的向后引用替换。例如,”(h)(e)” 的表达式会在文本中查找 “he”,把 “1” 放在替换为文本框中会用 “h” 取代 “he”, 而如果是 “21” 的话,则会用 “eh” 取代 “he” 。
k<name> 表示一个已命名的向后引用。已命名的向后引用是用以下形式引用之前匹配的已命名的捕获组:(?<name>expression)。如果 “name” 是一个数字,则它表示一个已编号的向后引用,相当于 1,2,3,…。
(?:pattern) 一个与格式相匹配,但不捕获该匹配的子表达式,这是一个不能用向后引用来存储的非捕获匹配。这个表达式通常和 “or” 字符 (|) 组合使用。例如,’industr(?:y|ies) 是一个比 ‘industry|industries’ 更实用的表达式。
(?=pattern) 子表达式执行匹配 lookahead 搜索,查找任何后面跟着符合的模式的字符串。例如,”x(?=abc)” 与 “x”相匹配仅当字符串后面跟着 “abc” 表达式时。 这是一个不能用向后引用来存储的非捕获匹配。模式不包含换行。
(?!pattern) 子表达式执行非匹配 lookahead 搜索,查找任何后面没有跟着符合的模式的字符串。例如,”x(?!abc)” 与 “x” 相匹配只有当该字符串后面不跟着 “abc” 表达式时。这是一个不能用向后引用来存储的非捕获匹配。模式不包含换行。
(?<=pattern) 子表达式执行匹配 lookbehind 搜索,查找任何前面是符合的模式的字符串。例如,”(?<=abc)x” 匹配一个 “x” 只有当它前面有表达式 “abc”时。这是一个不能用向后引用来存储的非捕获匹配。模式不包含换行。模式必须是固定长度。
(?<!pattern) 子表达式执行非匹配 lookbehind 搜索,查找任何前面不是符合模式的字符串。例如,”(?<!abc)x” 匹配 “x” 只有当它前面不跟着 “abc” 表达式时。这是一个不能用向后引用来存储的非捕获匹配。模式不包含换行。模式必须是固定长度。
x|y 与 x 或 y 向匹配。例如,’z|food’ 与 “z” 或 “food” 匹配。'(z|f)ood’ 与 “zood” 或 “food” 匹配。
[xyz] 字符集。匹配任何在括号内的字符。例如,'[abc]’ 与 “plain” 中的 ‘a’ 相匹配。
[^xyz] 负字符集。匹配任何不在括号内的字符。例如,[^abc]’ 与 “plain” 中的 ‘p’ 相匹配。
[a-z] 字符范围。与任何指定范围的字符相匹配。例如,'[a-z]’ 与任何 ‘a’ 到 ‘z’ 的小写字母相匹配。
[^a-z] 负字符范围。与任何不在指定范围内的字符相匹配。例如,'[a-z]’ 与任何不在 ‘a’ 到 ‘z’ 范围内的字符相匹配。

字符类

下面的字符类被用在字符集中,例如 “[:classname:]”。例如,”[[:space:]]” 是所有空白字符的集合。

alnum 任何语言字符及数字: 字母,音节或表意字符。
alpha 任何语言字符: 字母,音节或表意字符。
blank 任何空白字符,空格或 tab。
cntrl 任何控制字符。
digit 任何 0-9 的数字。
graph 任何图形字符。
lower 任何 a-z 的小写字符,以及其他小写字符。
print 任何可打印的字符。
punct 任何标点字符。
space 任何空白字符。
upper 任何 A-Z 的大写字母,以及其他大写字符。
xdigit 任何十六进制数字字符,0-9,a-f 还有 A-F。
word 任何单词字符 – 所有字母数字字符以及下划线。
unicode 任何大于 255 代码的字符。

单一字符转义序列

下列转义序列是单一字符的别名:

0x07 a 响铃字符。
0x0C f 换页 (FF)。
0x0A n 换行字符。
0x0D r 回车符。
0x09 t Tab 字符。
0x0B v 垂直 tab。
0x1B e ASCII 转义符。
0dd dd 八进制字符代码,dd 是一个或多个八进制数字。
0xXX xXX 一个十六进制字符代码,XX 是一个或多个十六进制数字 (一个 Unicode 字符)。
0xXXXX x{XXXX} 一个十六进制字符代码,XXXX 是一个或多个十六进制数字 (一个 Unicode 字符)。
Z-‘@’ cZ Z-‘@’ 一个 ASCII 转义序列控制-Z,其中 Z 是任一 ASCII 字符大于或等于 ‘@’ 的字符代码。

单词边界

下列转义序列与单词的边界相匹配:

< 匹配一个单词的开头。(仅限 Boost.Regex)
> 匹配一个单词的结尾。(仅限 Boost.Regex)
b 匹配单词的边界(一个单词的开头或结尾)。
B 仅当不在单词边界处时匹配。

字符类的转义序列

下列转义序列能被用来表示整个字符类:

w 任何单词字符 – 所有字母数字字符加下划线。
W w 的补集 – 查找任何非单词的字符。
s 任何空白字符。
S s 的补集。
d 任何 0-9 的数字。
D d 的补集。
l 任何 a-z 的小写字符。
L l 的补集。
u 任何 A-Z 的大写字符。
U u 补集。
C 任何单一字符,等同与 ‘.’。
Q 开始引述运算符,任何跟在该符号后面的内容会被作为一个文本字符直到找到 E 结束引述运算符。
E 结束引述运算符,终止一个由 Q 开始的序列。

替换表达式

请参考替换表达式语法

注意

在在文件中查找和在文件中替换中,回车符 (r) 以及换行符 (n) 必须仔细指明。更多信息,请参考指定换行

为了一些转义序列能在 EmEditor 中运作,例如 “l”, “u” 以及它们的补集,必须选择区分大小写的选项。

更多参考:《EmEditor 帮助》

给TA买糖
共{{data.count}}人
人已赞赏
桌面工具

xdown torrent 专业的文件下载与分享工具

2020-5-10 11:59:08

桌面工具

EmEditor Pro 专业文本编辑器

2020-5-13 10:10:16

⚠️
Golurending上的部份代码及教程来源于互联网,仅供网友学习交流,未经Golurending作者或上传书面授权,请勿作他用。
若您的权利被侵害,请联系站长 邮箱codesns#163.com(#-@) 或 点击右侧 私信:管理员 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索