设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: todaynew
打印 上一主题 下一主题

[模块/函数] 【Access小品】屌丝的逆袭---女友租赁合同管理系统示例

[复制链接]
13#
发表于 2015-5-28 21:00:18 | 只看该作者
好赞!!!
回复

使用道具 举报

12#
发表于 2015-4-13 17:43:16 | 只看该作者
其实可以不用正则,就是通过普通替换就可搞定
11#
发表于 2015-4-11 00:18:31 | 只看该作者
好好好好好好好好好
10#
发表于 2013-3-21 08:46:11 | 只看该作者
特太高了

点击这里给我发消息

9#
发表于 2013-3-20 22:09:53 | 只看该作者
牛{:soso_e179:}
8#
发表于 2013-3-20 19:45:32 | 只看该作者
好东西
7#
发表于 2013-3-20 18:40:05 | 只看该作者
该范例真搞呀

点击这里给我发消息

6#
发表于 2013-3-20 17:39:23 | 只看该作者
强,留个记号回头研究。楼主真牛
5#
 楼主| 发表于 2013-3-20 15:26:40 | 只看该作者
本帖最后由 todaynew 于 2013-3-20 16:04 编辑
轻风 发表于 2013-3-20 14:11
老汉最近正则表达式用得越来越得心应手啊!
代码中没有注释,看得头晕。

strmatch = "(^出租方:)(.*)((?:\r\n)+承租方:)(.*)((?:\r\n)+(?:.*|(?:\r\n)+)*$)"
If TestStr(str, strmatch) = True Then
    Restr = "$1" & Me.出租方.Value & "$3" & Me.承租方.Value & "$5"
    str = ReplaceMatch(str, strmatch, Restr)
    Me.合同.Caption = str
End If

以上代码的解释:
一、strmatch存放的是一个正则表达式,这个正则表达式可以写为:
1、(^出租方:)表示文章的开始是“出租方:”,其中^表示字符串的开始位置的通配符。
2、(.*)表示一串各种类型的字符,其中“.”通配任意字符,“*”表示重复0到任意次数。
3、(?:\r\n)+表示一个以上的回车符与换行符,\r为回车符即chr(13),\n为换行符即chr(10),“+”表示至少一次(与“*”类似,只是起始值不同,“*”可以是0次),(?:正则表达式)中的“?:”表示不捕获这个正则表达式变量。
4、(?:.*|(?:\r\n)表示或者是一串连续的字符,或者是回车符与换行符,也就是所有段落(也可以写成"(?:.*\r\n)"一段字符串紧跟着回车换行符)。
5、成对出现的括号中,除了包含?:这样的东西外,都是被捕获到的正则表达式变量,所以这个表达式总共有5个正则表达式变量,它们从左到有依次默认的变量名为$1、$2、$3、$4、$5。

二、Restr中存放的也是一个正则表达式,所不同的是它直接调用strmatch中捕获到的正则表达式变量,并重新拼凑正则表达式。也就是将正则表达式变量$2、$4分别用Me.出租方.Value和Me.承租方.Value替换掉。实际上$2和$4变量标识出的是一个替换位置。所以strmatch也可以采用环视(有的文章叫做零带)的方式来写,这样也可以方便的找到需要替换的位置。

三、ReplaceMatch(str, strmatch, Restr)做正则表达式替换。

四、在后面用了一个strmatch = "(^(?:.*\r\n)*\s+.*租女友时间:)(.*)(至)(.*)(,共计)(\d+)(天,每天基本租金)(\d+)((?:元)(?:.*\r\n)*$)"的正则表达式,大部分的正则表达式元字符在前面都已经解释过了,只有两个需要说明一下:
1、\s+表示多个连续的空格;
2、\d+表示多个连续的数字字符。

五、表示一种匹配结果的正则表达式可以有很多种写法,这与对正则表达式熟悉的程度和个人习惯有关。

六、正则表达式示意图

本帖子中包含更多资源

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

x
4#
发表于 2013-3-20 14:46:24 | 只看该作者
这个好 要好好研究一下了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-3 08:28 , Processed in 0.112791 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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