本文目录一览:
精通正则表达式是种怎样的体验?
不能算多精通,只是会了正则以后就会想着用正则解决各种问题,就像上帝又给你打开一扇窗。
平时分析日志什么的不在话下,有时还能做一些用框架或很复杂的方法才能做到的事。
比如想用Python写点脚本抓数据,定义好SQL以后中以根据SQL来生成Python的Entity代码,然后用反射写DAO,这样写完SQL你就有现成的DAO可以用了,这也算是一个简单的ORM吧,虽然可以用Django等框架,但用自己生成的代码还是很爽的,想怎么改就怎么改。-精通正则表达式
根据SQL生成Entity的代码:
#!/usr/bin/perl -W
if (!$ARGV[0])
{
print "Usage: $0 filename\n";
print "Example: $0 test.sql entity.py\n";
exit;
}
print "#!/usr/bin/python\n# vim:set fdm=indent:\n# Please do NOT modify this file, it was generated by a Perl script, a next generate will restore all your work.\n\n";-精通正则表达式
print "class Entity:\n\tdef __str__(self):\n\t\treturn '\\n'.join(map(lambda attr: '%s: %s' % (attr, str(getattr(self, attr))), filter(lambda attr: not attr.startswith('__'), dir(self))))\n\n";-精通正则表达式
open FILE, $ARGV[0];
while (FILE)
{
s/\r//g;
s/^\n$//;
s/^\(.*\n//;
s/^\s*(BEGIN|COMMIT|GRANT|CONSTRAINT|DROP).*\n//i;
s/^\s*USE\s+\w+.*\n//i;
s/^\s*\w*\s*KEY.*\n//i;
s/^\s*CREATE\s*DATABASE.*\n//i;
s/^(\s*)\/\*(.*)\*\/.*/$1#$2/;
s/^\s*CREATE\s*TABLE\s*(?:IF\s*NOT\s*EXISTS\s*)?(\w+)\s*\(?$/class $1Entity(Entity):\n\tdef __init__(self):\n/i;-精通正则表达式
s/(?=^class )(\w)/\U$1/;
s/(?=^class )(\w*?)_(\w)/$1\U$2/g while /^class.*?_/;
s/^\s*(\w+)\s+\w*INT.*$/\t\tself.$1 = 0/i;
s/^\s*(\w+)\s+DECIMAL.*$/\t\tself.$1 = 0/i;
s/^\s*(\w+)\s+BOOLEAN.*$/\t\tself.$1 = False/i;
s/^\s*(\w+)\s+TIMESTAMP.*$/\t\tself.$1 = 0/i;
s/^\s*(\w+)\s+\w*CHAR.*$/\t\tself.$1 = ''/i;
s/^\s*(\w+)\s+TEXT.*$/\t\tself.$1 = ''/i;
s/^\s*(\w+)\s+DATETIME.*$/\t\tself.$1 = ''/i;
s/^\).*//;
}
print "if __name__ == '__main__':\n\tprint(UserEntity())"
精通正则表达式的目录
第1章 正则表达式概述 3
1.1 什么是正则表达式 3
1.2 第一个正则表达式 4
1.3 测试工具 5
第2章 正则表达式基础理论 7
2.1 元字符 7
2.1.1 匹配位置的元字符 8
2.1.2 匹配字符的元字符 8
2.1.3 元字符总结 9
2.2 字符类 12
2.3 字符转义 14
2.4 反义 14
2.5 限定符 15
2.6 替换 21
2.7 分组 23
2.8 后向引用 24
2.9 零宽度断言 25
2.10 负向零宽度断言 27
2.11 匹配选项 27
2.12 注释 28
2.13 优先级顺序 28
2.14 递归匹配 29
2.15 典型正则表达式解释 30
第3章 数字验证 33
3.1 数值验证 33
3.1.1 只包含数字 33
3.1.2 整数验证 37
3.1.3 指定范围的整数验证 38
3.1.4 实数验证 42
3.1.5 指定精度的实数验证 45
3.1.6 科学计数法的数值验证 45
3.1.7 二进制数值验证 46
3.1.8 八进制数值验证 47
3.1.9 十六进制数值验证 49
3.2 电话号码验证 50
3.2.1 手机号码验证 50
3.2.2 固定电话号码(不包括区号)验证 51
3.2.3 “区号+固定电话号码”验证 53
3.2.4 “区号+固定电话号码+分机号码”验证 54
3.2.5 固定电话号码验证总结 55
3.3 邮政编码验证 57
3.3.1 国内邮政编码验证 57
3.3.2 国际邮政编码验证 57
3.4 IP地址验证 58
3.4.1 简单IP地址验证 58
3.4.2 精确IP地址验证 59
3.4.3 子网内部IP地址验证 60
3.4.4 64位IP地址验证 61
3.5 身份证验证 63
3.5.1 15位身份证号码验证 63
3.5.2 18位身份证号码验证 64
3.6 银行卡号验证 65
3.6.1 银行卡号验证 65
3.6.2 信用卡卡号验证 65
3.6.3 中国建设银行卡号验证 66
3.6.4 中国工商银行卡号验证 66
3.6.5 中国农业银行卡号验证 66
第4章 字符串验证 67
4.1 英文单词验证 67
4.1.1 小写单词验证 67
4.1.2 大写英文单词验证 68
4.1.3 英文单词的分隔符验证 69
4.1.4 不包含验证 71
4.1.5 具有重复特征的英文单词验证 74
4.2 文件名称和文件路径验证 76
4.2.1 通配符 76
4.2.2 指定文件扩展名的验证 76
4.2.3 指定文件名的验证 77
4.2.4 包含指定字符串的文件全名验证 78
4.2.5 排除两端存在空白字符的文件全名验证 79
4.2.6 文件路径验证 81
4.3 网络常用元素验证 82
4.3.1 电子邮件验证 82
4.3.2 主机名称验证 83
4.3.3 HTTP地址验证 85
4.3.4 FTP地址验证 86
4.4 非单词字符串验证 86
4.4.1 英文标点符号验证 87
4.4.2 中文标点符号验证 87
4.4.3 中文文本验证 88
4.4.4 特殊字符验证 88
4.4.5 密码验证 89
4.4.6 字符表的分类 93
第5章 数字和字符混合验证 95
5.1 日期和时间验证 95
5.1.1 年验证 95
5.1.2 月验证 96
5.1.3 日验证 97
5.1.4 年月日格式的日期验证 98
5.1.5 24小时制时分秒格式的时间验证 99
5.1.6 12小时制时分秒格式的时间验证 100
5.1.7 带毫秒的时间验证 102
5.1.8 长格式的日期和时间验证 103
5.2 通用车牌号码验证 104
5.3 数学表达式验证 106
5.3.1 操作数验证 106
5.3.2 操作符验证 107
5.3.3 简单数学表达式验证 107
5.3.4 只含操作数和操作符的数学表达式验证 108
5.3.5 含小括号的数学表达式验证 109
5.4 编码规范验证 111
5.4.1 类名称验证 111
5.4.2 声明变量表达式验证 112
5.4.3 函数名称验证 112
5.4.4 声明函数表达式验证 113
第6章 验证和处理HTML元素 117
6.1 HTML元素验证基础 117
6.1.1 HTML标记验证 117
6.1.2 非封闭HTML标记验证 119
6.1.3 封闭HTML标记验证 119
6.1.4 属性赋值表达式验证 120
6.1.5 HTML中的注释验证 124
6.1.6 HTML中的脚本代码块验证 125
6.2 非封闭的HTML元素验证 126
6.3 封闭的HTML元素验证 127
6.4 br 元素验证 128
6.5 hr 元素验证 130
6.6 a 元素验证 133
6.7 input 元素验证 137
6.8 处理HTML元素 139
6.8.1 提取HTML标记 139
6.8.2 提取HTML标记之间的内容 140
6.8.3 提取URL 141
6.8.4 提取图像的URL 142
6.8.5 提取HTML页面的标题 142 第7章 C#常用数据类型检查与转换 147
7.1 数值数据类型检查与转换 147
7.1.1 整数检查 147
7.1.2 实数检查 149
7.1.3 整数和字符串之间的转换 150
7.1.4 浮点数和字符串之间的转换 151
7.2 布尔数据类型检查与转换 153
7.2.1 布尔值检查 153
7.2.2 布尔值和字符串之间的转换 153
7.3 时间数据类型检查与转换 154
7.3.1 时间数据类型检查 154
7.3.2 时间和字符串之间的转换 155
7.4 数据类型检查与转换应用实例 156
第8章 字符串处理 158
8.1 不变字符串String处理 158
8.1.1 String类和对象 158
8.1.2 插入字符串 159
8.1.3 删除字符串 160
8.1.4 替换字符串 160
8.1.5 分割字符串 161
8.1.6 填充字符串 161
8.1.7 比较字符串 162
8.1.8 连接字符串 163
8.1.9 处理字符串中的空白 165
8.1.10 转换字符串大小写 165
8.1.11 匹配和检索字符串 166
8.1.12 获取子字符串 168
8.1.13 格式化字符串 169
8.1.14 编码字符串 169
8.1.15 不可变字符串String处理的应用 170
8.2 可变字符串StringBuilder处理 172
8.2.1 StringBuilder类和对象 172
8.2.2 追加字符串 172
8.2.3 插入字符串 174
8.2.4 删除字符串 176
8.2.5 替换字符串 176
8.2.6 复制字符串 177
8.2.7 处理字符串容量 178
8.2.8 可变字符串StringBuilder处理的应用 179
第9章 .NET框架中正则表达式的应用 181
9.1 .NET框架中的正则表达式类库 181
9.1.1 System.Text.RegularExpressions名字空间 181
9.1.2 正则表达式类Regex 182
9.1.3 正则表达式选项 183
9.1.4 检查是否匹配表达式 183
9.1.5 匹配单个匹配项 185
9.1.6 匹配多个匹配项 186
9.1.7 替换 188
9.1.8 使用委托MatchEvaluator处理匹配结果 189
9.1.9 获取分组名称 190
9.1.10 分割表达式 190
9.2 使用正则表达式类Regex处理字符串 191
9.2.1 只包含数字验证 191
9.2.2 整数验证 191
9.2.3 实数验证 192
9.2.4 电话号码验证 192
9.2.5 邮政编码验证 192
9.2.6 身份证号码验证 192
9.2.7 银行卡号验证 193
9.2.8 日期和时间验证 193
9.2.9 车牌号码验证 193
9.2.10 IP地址验证 194
9.2.11 电子邮件验证 194
9.2.12 URL验证 194
9.2.13 提取网页标题 194
9.2.14 提取网页中的HTTP地址 196
9.2.15 提取网页中的图像地址 197
第10章 数据验证 199
10.1 验证概述 199
10.2 非空验证 201
10.2.1 无初始值的非空验证 201
10.2.2 指定初始值的验证 202
10.3 范围验证 203
10.3.1 整数范围验证 203
10.3.2 字母范围验证 204
10.3.3 日期范围验证 205
10.4 比较验证 206
10.4.1 两个控件内容的比较验证 206
10.4.2 指定的值和控件内容的比较验证 207
10.4.3 检查控件内容的数据类型 208
10.5 正则表达式验证 209
10.5.1 整数验证 209
10.5.2 数值验证 210
10.5.3 电话号码验证 211
10.5.4 身份证号码验证 212
10.5.5 日期和时间验证 213
10.5.6 电子邮件验证 214
10.5.7 URL验证 215
10.6 自定义验证 217
10.6.1 自定义服务器端验证 217
10.6.2 自定义客户端验证 218
10.7 显示验证摘要 219
10.7.1 在网页上显示验证摘要 220
10.7.2 在对话框上显示验证摘要 220 第11章 ASP数据类型及其转换 225
11.1 VBScript数据类型 225
11.2 VBScript数据类型判断 226
11.2.1 判断变量是否为数组 226
11.2.2 判断变量是否为日期 227
11.2.3 判断变量是否为空 228
11.2.4 判断变量是否为空值 228
11.2.5 判断变量是否为数值 229
11.2.6 判断变量是否为对象 230
11.2.7 获取变量的子类型 231
11.2.8 获取变量的类型信息 231
第12章 ASP字符串处理 233
12.1 字符串截取、组合 233
12.1.1 获取字符串长度 233
12.1.2 正向截取字符串 234
12.1.3 反向截取字符串 234
12.1.4 从中截取字符串 235
12.1.5 删除字符串前导空格 236
12.1.6 删除字符串后导空格 236
12.1.7 删除字符串前后导空格 237
12.1.8 将数组元素连接为字符串 238
12.1.9 切分字符串 238
12.2 字符串查找、替换 239
12.2.1 正向查找字符串 239
12.2.2 反向查找字符串 241
12.2.3 字符串替换 242
12.3 字符串转化 243
12.3.1 字符串小写转化 243
12.3.2 字符串大写转化 244
12.3.3 字符串倒序排列 245
12.3.4 构造指定元素的字符串 246
12.3.5 构造空格字符串 247
第13章 ASP中正则表达式的应用 248
13.1 正则表达式对象RegExp概述 248
13.1.1 创建正则表达式对象 248
13.1.2 指定正则表达式 248
13.1.3 进行正则匹配检验 249
13.2 提高匹配效率 250
13.2.1 设置匹配范围 250
13.2.2 指定忽略大小写 250
13.2.3 进行正则匹配替换 251
13.3 匹配集合Matches 252
13.3.1 获取Matches集合 252
13.3.2 Matches集合与Match对象 253 第14章 PHP数据类型及其转换 259
14.1 PHP常见数据类型 259
14.1.1 布尔型 259
14.1.2 NULL型 260
14.1.3 整型 260
14.1.4 浮点型 260
14.1.5 字符串 260
14.1.6 数组 262
14.1.7 对象 263
14.2 类型转换 264
14.2.1 变量类型变化 264
14.2.2 强制类型转换 266
14.2.3 字符串转换 268
14.2.4 数值转换 269
14.2.5 数组转换 269
第15章 PHP字符串处理 270
15.1 字符串分析 270
15.1.1 访问字符串中的字符 270
15.1.2 处理子字符串 271
15.1.3 分割字符串 273
15.2 字符串的整理 275
15.2.1 删除字符串的空白 275
15.2.2 字符串的填充 276
15.2.3 字符串大小写的转换 277
15.2.4 字符串的反转 278
15.3 字符串的比较 278
15.3.1 按ASCII码顺序比较 278
15.3.2 按“自然排序”法比较 280
15.3.3 按相似性比较 281
15.4 字符串的查找和替换 282
15.4.1 查找字符串 282
15.4.2 替换字符串 283
15.5 字符串的格式化 286
15.5.1 格式化数字 286
15.5.2 格式化字符串 286
15.6 处理HTML和URL 288
15.6.1 HTML实体的处理 288
15.6.2 HTML标签的清理 290
15.6.3 URL字符串的解析 291
15.6.4 URL编码处理 293
15.6.5 查询字符串的构造 293
第16章 PHP中正则表达式的应用 295
16.1 POSIX扩展库正则表达式函数 295
16.1.1 模式匹配 295
16.1.2 模式替换 297
16.1.3 模式分割 297
16.2 PCRE库的正则表达式函数 298
16.2.1 进行正则表达式匹配 298
16.2.2 取得正则表达式的全部匹配 299
16.2.3 返回与模式匹配的数组单元 300
16.2.4 正则表达式的替换 300
16.2.5 正则表达式的拆分 301
16.3 PHP与正则表达式的综合应用 302
16.3.1 表单验证 302
16.3.2 UBB代码 306
16.3.3 分析Apache日志文件 310 第17章 JSP中数据类型及其转化 317
17.1 JSP中的常用数据类型 317
17.1.1 整数类型 317
17.1.2 浮点类型 320
17.1.3 字符类型 321
17.1.4 布尔类型 322
17.1.5 字符串类型 323
17.2 JSP中数据类型的转换 325
17.2.1 自动类型转换 325
17.2.2 强制类型转换 326
17.3 JSP中字符串数据的处理 327
17.3.1 字符串与其他类型数据的转换 327
17.3.2 字符串的分析 329
17.3.3 字符串的查找与替换 330
17.3.4 字符串数据的整理 332
17.3.5 字符串的比较 333
17.3.6 字符串的连接 334
17.3.7 字符串的格式化 335
第18章 JSP中正则表达式应用 337
18.1 JSP中的正则表达式函数 337
18.1.1 Pattern类 337
18.1.2 Matcher类 339
18.1.3 正则表达式常用的4种功能 342
18.2 JSP中正则表达式的常见应用示例 346
18.2.1 电子邮件地址的校验 346
18.2.2 URL地址的校验 348
18.2.3 电话号码的校验 349 第19章 JavaScript数据类型及其转换 353
19.1 JavaScript数据类型 353
19.1.1 数字类型 353
19.1.2 字符串类型 354
19.1.3 布尔值类型 355
19.2 数据类型转换 356
19.2.1 基本数据类型转换 356
19.2.2 将字符串转换为整数 356
19.2.3 将字符串转换为浮点数 356
第20章 JavaScript字符串和数组 357
20.1 字符串格式处理 357
20.1.1 获取字符串的长度 357
20.1.2 根据指定的Unicode编码返回一个字符串 358
20.1.3 比较两个字符串的大小 358
20.1.4 将字符串分割并存储到数组中 359
20.1.5 将字符串转换为小写格式 360
20.1.6 将字符串转换为大写格式 360
20.2 字符串截取、组合 361
20.2.1 返回字符串中指定位置处的字符 361
20.2.2 获取指定位置字符的Unicode编码 362
20.2.3 将一个或多个字符串连接到当前字符串的末尾 364
20.2.4 从字符串中提取子串(1) 364
20.2.5 从字符串中提取子串(2) 365
20.2.6 从字符串中提取子串(3) 366
20.3 字符串查找、替换 367
20.3.1 获取指定字符(串)第一次在字符串中出现的位置 367
20.3.2 获取指定字符(串)最后一次在字符串中出现的位置 368
20.3.3 替换字符串中指定的内容 369
20.4 字符串HTML格式化 370
20.4.1 在字符串两端加入锚点标志 370
20.4.2 在指定字符串的两端加上大字体标志 370
20.4.3 在字符串的两端加上粗体标志 371
20.4.4 在字符串两端加入斜体标签 371
20.4.5 在字符串两端加上固定宽度字体标记 372
20.4.6 设置字符串输出时的前景色 373
20.4.7 设置字符串输出时的字体大小 374
20.4.8 在字符串上加入超级链接 375
20.4.9 在字符串两端加入小字体标记 375
20.4.10 在字符串两端加入下划线标记 376
20.4.11 在字符串两端加入下标标签 377
20.4.12 在字符串两端加入上标标签 378
20.5 Array对象的方法 378
20.5.1 连接其他数组到当前数组末尾 378
20.5.2 将数组元素连接为字符串 379
20.5.3 删除数组中的最后一个元素 380
20.5.4 将指定的数据添加到数组中 380
20.5.5 反序排列数组中的元素 381
20.5.6 删除数组中的第一个元素 382
20.5.7 获取数组中的一部分数据 382
20.5.8 对数组中的元素进行排序 383
20.5.9 删除或替换数组中的部分数据 384
20.5.10 在数组前面插入数据 385
20.5.11 返回一个包含数组中全部数据的字符串 386
第21章 JavaScript中正则表达式的应用 387
21.1 应用正则表达式对象RegExp 387
21.1.1 创建正则表达式 387
21.1.2 判断字符串中是否存在匹配内容 388
21.1.3 对字符串进行匹配检测 389
21.1.4 编译正则表达式 389
21.1.5 替换字符串中的指定内容 390
21.2 匹配结果处理 391
21.2.1 获取字符串中所有的匹配信息 391
21.2.2 获取第一次匹配的起始位置(1) 392
21.2.3 获取第一次匹配的起始位置(2) 393
21.2.4 获取子匹配的结果 394
21.2.5 获取与正则表达式进行匹配检测的字符串 395
21.2.6 获取匹配内容的最后一个索引位置 395
21.2.7 获取最近一次匹配的内容 396
21.2.8 获取最近一次匹配的最后一个子匹配 397
21.2.9 获取匹配内容左侧的字符信息 397
21.2.10 获取匹配内容右侧的字符信息 398
《精通正则表达式第三版》pdf下载在线阅读全文,求百度网盘云资源
《精通正则表达式第三版》百度网盘pdf最新全集下载:
链接:
?pwd=sxdv 提取码:sxdv
简介:《精通正则表达式(第3版)》内容简介:随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。《精通正则表达式(第3版)》是讲解正则表达式的经典之作。
《精通正则表达式(第3版)》主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。《精通正则表达式(第3版)》自第1版开始着力于教会读者“以正则表达式来思考”,来让读者真正“精通”正则表达式。该版对PHP的相关内容、Javal.5和Javal.6的新特性作了可观的扩充讲解。任何有机会仲用正则表达式的读者都会从中获益匪浅。-精通正则表达式
精通正则表达式怎么样
正则表达式非常强大,在各种语言都有相关的包或库。看完了前五章已经对我大有帮助!翻译也不错,读起来顺畅,内容包括了从入门到精通,后面几章主要是分语言来讲解正......