返回列表 发新帖

MT正则表达式快速入门教程

    [复制链接]

319

主题

4373

回帖

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
120197
好评
1132
信誉
201

MT论坛元老MT论坛优秀教师2018MT论坛优秀成员

QQ
发表于 2018-8-23 22:42:38 | 显示全部楼层 | 阅读模式  来自 江苏
在编辑文本时,如果要找到一段文字的位置,相信大家都会知道用搜索功能吧,但如果这段文字不是固定的(不过有一定规律),这时候怎么搜索呢?

举个栗子,我想要找到一段以abc开头、中间3个任意字符、以def结尾的文字,像abc123def、abcwwwdef都符合条件,这时候传统的文字搜索是无法满足需求的。

其实在强大的正则表达式面前,这种需求是小意思,你只需要输入abc...def,同时启用正则表达式,就可以搜索到了。



在正则表达式中,英文句号 . 代表除了换行符以外的任意一个字符(划重点),三个点就代表三个任意字符,所以 abc...def 就满足了上面例子中提到的要求。

现在改下条件,我想要找到一段以abc开头、中间零或多个K、以def结尾的文字,例如abcdef、abcKdef、abcKKKdef,这时候该怎么办?

在正则表达式中,星号 * 代表匹配前一个字零次或多次(划重点),所以 abcK*def 就是答案了(不截图了,自己去MT管理器中尝试)。
与 * 类似的,+ 表示匹配最少一次,? 表示匹配零次或一次(划重点)

同时,* + ? 可以与我们前面提到的 . 结合使用,abc.+def 就表示以abc开头,中间有一个以上的任意字符,以def结尾的一段文字,例如abcHaHaHaHadef。



上面提到的四个符号,可以说是正则表达式中最常用,也是最简单的,但光学了这四个符号远远不够。

因为 . 表示的是除了换行符之外的任意字符,但是这个范围太广了,有时候我希望一个符号来表示数字、字母、空白符等等,这时候需要用到中括号[]。

例如[0123456789]可以匹配0到9这十个数字中的任意一个,当然这么写太麻烦了,因为他们是连续的,你可以简写成[0-9],同样的还有[a-z]表示字母。

如果要同时表示数字和字母呢?那就使用[0-9a-z],如果要同时表示数字和字母和下划线,可以写成[0-9a-z_]

另一种情况就是排除匹配法,比如[0-9]代表数字,那我想要找不是数字的符号呢?只需要写成[^0-9],另外两个例子也是一样[^0-9a-z][^0-9a-z_]



正则表达式还提供了一些符号来代表某些字符,\n代表换行符,\s代表空白符(等价于[ \f\n\r\t\v]),\S代表非空白符(等价于[^ \f\n\r\t\v]),\d代表数字(等价于[0-9]),\D代表非数字(等价于[^0-9]),^代表一行开头,$代表一行的结尾(MT管理器中自动开启了正则多行模式,^$代表的是一行的开头和结尾,在其它软件中如果没有开启则代表的是一段文字的开头和结尾)。



前面提到的 * + ? 都是匹配前一个字N次,但是我想匹配连在一起的几个字N次呢?那就用括号把这几个字扩起来,例如 (abc)+ 就可以匹配到 abcabcabc。



大家看到这可能还有个疑问,比如 * 代表匹配前一个字N次,那我单纯地像搜索 * 这个字,不希望它代表其它含义呢?这时候只需要在前面加个 \ ,也就是 \*,其它特殊符号也是一样的,另外用 \\ 来代表一个 \。



就先说这些吧,都是比较简单和常用的,想了解更多正则表达式的知识可以去查百度百科。

现在举个实例帮助大家消化:

在Dex编辑器++中,如果我们用正则表达式找出所有onCreate方法:

.method public onCreate(Lxxxxxxxx;)V

首先我们要找出规律,所有方法都是以.method开头,接着是public、protected、abstract之类的修饰符,接着是方法名onCreate,方法名后面是: (参数列表)返回值类型

所以我们可以这么写(搜索类型选择代码):

\.method .*onCreate

其中 \.method 的 . 是特殊符号,所以前面加\;修饰符直接用 .* 表示。

不过测试后发现这个表达式把类似 onCreateMenu 之类的方法也给找出来了,所以我们需要在 onCreate 后面继续加条件。

\.method .*onCreate *\(

这边我加入了 *\(,注意 * 前面有个空格(因为方法名和左括号之间可以有零或多个空格)。然后括号是特殊符号,需要加个\

搜索结果如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已有6人评分好评 金币 理由
可可西里 + 1 + 1 非常不错
MTV77 + 1 很给力!
白又白 + 1 + 1 终于看明白了,赞
da36 + 1
云天灬魂 + 1 + 1
༺ཌ无࿈奈ད༻ + 1

查看全部评分 总评分:好评 +4  金币 +5 

回复

使用道具 举报

13

主题

683

回帖

2058

积分

大学生

Rank: 5Rank: 5

金币
1367
好评
8
信誉
114

考神MT论坛帅哥

QQ
发表于 2018-8-23 22:46:06 来自手机  | 显示全部楼层  来自 海南
bin大大的贴子必须支持
回复

使用道具 举报

69

主题

8760

回帖

3万

积分

版主

神秘人

Rank: 7Rank: 7Rank: 7

金币
14046
好评
277
信誉
121

MT论坛大神2018国庆快乐MT论坛元老MT论坛优秀版主MT论坛最佳新人2018国庆节MT论坛帅哥MT论坛活跃会员2019-5.1节快乐考神MT论坛侠客MT论坛新人

QQ
发表于 2018-8-23 22:51:17 来自手机  | 显示全部楼层  来自 福建
路过瞧瞧
回复

使用道具 举报

107

主题

2595

回帖

8634

积分

硕士生

MT小白

Rank: 6Rank: 6

金币
3359
好评
42
信誉
101

MT论坛荣誉管理MT论坛新人MT论坛灌水老大

发表于 2018-8-23 22:53:51 来自手机  | 显示全部楼层  来自 广东
百度的看着那么长就不想看了
还是Bin大的浓缩才是精华
回复

使用道具 举报

319

主题

4373

回帖

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
120197
好评
1132
信誉
201

MT论坛元老MT论坛优秀教师2018MT论坛优秀成员

QQ
发表于 2018-8-23 22:57:31 来自手机  | 显示全部楼层  来自 江苏
风月无情 发表于 2018-8-23 22:53
百度的看着那么长就不想看了
还是Bin大的浓缩才是精华

百度百科看那张表就行了,很多不常用的符号我都记不住,每次都要查
回复

使用道具 举报

31

主题

1970

回帖

9735

积分

硕士生

Rank: 6Rank: 6

金币
1252
好评
1
信誉
100
发表于 2018-8-23 23:00:38 来自手机  | 显示全部楼层  来自 山东
Bin 发表于 2018-8-23 22:57
百度百科看那张表就行了,很多不常用的符号我都记不住,每次都要查

QQ浏览器教程能在发个吗
回复

使用道具 举报

69

主题

8760

回帖

3万

积分

版主

神秘人

Rank: 7Rank: 7Rank: 7

金币
14046
好评
277
信誉
121

MT论坛大神2018国庆快乐MT论坛元老MT论坛优秀版主MT论坛最佳新人2018国庆节MT论坛帅哥MT论坛活跃会员2019-5.1节快乐考神MT论坛侠客MT论坛新人

QQ
发表于 2018-8-23 23:00:57 来自手机  | 显示全部楼层  来自 福建
发现一个错别字

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

319

主题

4373

回帖

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
120197
好评
1132
信誉
201

MT论坛元老MT论坛优秀教师2018MT论坛优秀成员

QQ
发表于 2018-8-23 23:02:36 来自手机  | 显示全部楼层  来自 江苏
赤⚡️夜 发表于 2018-8-23 23:00
发现一个错别字

在你回复之前就改了
回复

使用道具 举报

10

主题

1178

回帖

4319

积分

大学生

Rank: 5Rank: 5

金币
3517
好评
11
信誉
103

MT论坛荣誉管理考神MT论坛最佳新人

发表于 2018-8-23 23:02:50 来自手机  | 显示全部楼层  来自 广东
支持,正则好用啊
回复

使用道具 举报

69

主题

8760

回帖

3万

积分

版主

神秘人

Rank: 7Rank: 7Rank: 7

金币
14046
好评
277
信誉
121

MT论坛大神2018国庆快乐MT论坛元老MT论坛优秀版主MT论坛最佳新人2018国庆节MT论坛帅哥MT论坛活跃会员2019-5.1节快乐考神MT论坛侠客MT论坛新人

QQ
发表于 2018-8-23 23:04:17 来自手机  | 显示全部楼层  来自 福建
Bin 发表于 2018-8-23 23:02
在你回复之前就改了

剪图,还有 ^$ 没红色
回复

使用道具 举报

7

主题

1834

回帖

4960

积分

大学生

Rank: 5Rank: 5

金币
2778
好评
2
信誉
100

考神

发表于 2018-8-23 23:07:24 来自手机  | 显示全部楼层  来自 广东
支持一下。
回复

使用道具 举报

51

主题

2223

回帖

8681

积分

硕士生

Rank: 6Rank: 6

金币
3416
好评
4
信誉
100

2019-5.1节快乐MT论坛帅哥考神

发表于 2018-8-23 23:10:16 来自手机  | 显示全部楼层  来自 湖南
论坛APP修复下,不能查看大图啊。
回复

使用道具 举报

40

主题

1486

回帖

6053

积分

硕士生

Rank: 6Rank: 6

金币
3354
好评
8
信誉
100
发表于 2018-8-23 23:12:01 | 显示全部楼层  来自 广东
前来支持bin了
回复

使用道具 举报

2

主题

431

回帖

960

积分

高中生

Rank: 4

金币
110
好评
0
信誉
112
发表于 2018-8-23 23:21:53 来自手机  | 显示全部楼层  来自 陕西
前排
回复

使用道具 举报

5

主题

691

回帖

2580

积分

大学生

Rank: 5Rank: 5

金币
1375
好评
7
信誉
101

考神MT论坛帅哥

QQ
发表于 2018-8-23 23:22:05 来自手机  | 显示全部楼层  来自 江苏
支持bin老大
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表