ubnt解决方案
楼主: viviczh

跑包区字典制作赛第一季

 关闭 [复制链接]

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 01:11 |显示全部楼层
daniele陈 发表于 2014-7-25 00:41
我对UE正则式还是一头雾水
我想请教几个问题:
1.使用什么命令删除字典里的纯数字串。


以下1、2正则式引擎都选择"Perl" ,按图设置,点“全部替换”,就可以将不需要的行替换成空行,!


1、删除纯数字的正则式:查找 ^\d{1,16}$     (这是验证1-16位纯数字行,1和16都可以自己选择修改)

     替换(空着)


   
2、删除8字符以下正则式:查找 ^.{1,7}$   (这是验证字符数为1至7位的行)
                                          替换(空着)




最后,删除空行: (引擎选择UltraEdit)查找 %[ ^t]++^p 替换为空




本帖子中包含更多资源

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

x

点评

Anywlan因您更精彩!: 4.0
Anywlan因您更精彩!: 4
这 正是我最需要的。非常感谢骇客师傅  发表于 2014-7-25 01:15

评分

1

查看全部评分

回复

使用道具 举报

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 01:15 |显示全部楼层
本帖最后由 骇客帝国 于 2014-7-25 01:49 编辑
老AK 发表于 2014-7-25 01:01
UE表达不了吧?能够精确干掉字母加生日数字的行其人在代码编程上已经有很深造旨了,本人也想一睹其代码, ...

有点复杂,有很多种情况,要睡觉了,就点到为止,自己发挥一下


验证3位字母开头与8位(20200101-20991231)生日结尾的行
     
^[A-Za-z]{3}(20)(2|3|4|5|6|7|8|9)\d{1}(0[1-9]|1[0-2])((0[1-9])|((1|2)[0-9])|30|31)$
回复

使用道具 举报

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 01:48 |显示全部楼层
按字符数先分类就没这么大了,处理2-3G的字典,UE还是可以胜任的
回复

使用道具 举报

311

回帖

3518

积分

383 小时

在线时间

少校

注册时间
2014-4-5
金币
3127 个
威望
1 个
荣誉
1 个
累计签到:338 天
连续签到:0 天
[LV.365]无线熟人
发表于 2014-7-25 09:36 |显示全部楼层
骇客帝国 发表于 2014-7-25 01:11
以下1、2正则式引擎都选择"Perl" ,按图设置,点“全部替换”,就可以将不需要的行替换成空行,!


...

很多字典都是合并整理其他高手的字典,我合并了一些小弱字典,用%[ ^t]++^p删除空行成功率不高,而且假死严重,查找度娘,据说UE自己的引擎不好。
到任务中
回复

使用道具 举报

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 10:17 |显示全部楼层
用%[ ^t]++^p删除空行假死现象是比较厉害,但不能说成功率不高,只要有耐心!
假死的现象主要是因为UE每操作一个步骤,就会占用大量内存!
在假死的时候,你可以直接关闭,然后在打开、恢复,这样会释放出一些早前UE操作占用的内存,再删除空行就比较快了!

如果觉得这个太慢,你也可以用其它软件,直接去重复,然后删掉第一个空行,结果是一样的!
回复

使用道具 举报

1140

回帖

4万

积分

1917 小时

在线时间

版主

注册时间
2009-10-18
金币
40631 个
威望
2 个
荣誉
1 个
累计签到:30 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-7-25 10:17 |显示全部楼层
本帖最后由 viviczh 于 2014-7-25 10:38 编辑

骇客的方法就不错了,ue俺也不懂,话说有没有把前面的文字复制到后面的功能?请教一下骇客,比如我要截取文本中第一位数字以前的文本该如何正则表达?能不能用ue实现复制黏贴呢?
随时随地无线
回复

使用道具 举报

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 10:45 |显示全部楼层
本帖最后由 骇客帝国 于 2014-7-25 12:24 编辑
viviczh 发表于 2014-7-25 10:17
骇客的方法就不错了,ue俺也不懂,话说有没有把前面的文字复制到后面的功能?请教一下骇客,比如我要截取文 ...


这个你可以倒过来处理,

就是把所有行中第一个数字之后的字符删除:

正则式引擎选择Unix,查找 \d.*$  替换为 空串    剩下的就是你需要的




看,匹配的结果(着色部分)





如果你想把这些提取出来的字符,再连接到原字典对应行的后面,那就不要处理提取出来的数据(不要删除重复、不要删除空行),(随便做了2个小文本做例子,一个文本中特地留了一些空行,这样直观些)

方法一:用其它软件直接和原字典“对应行”合并:(飞梭TXT文本数据合并工具可以实现)

示例:图中前二个文本文件“行对应行”合并,得出后面的结果:




方法二:用UE也可以实现;










本帖子中包含更多资源

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

x
回复

使用道具 举报

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 11:45 |显示全部楼层
本帖最后由 骇客帝国 于 2014-7-25 12:11 编辑
老AK 发表于 2014-7-25 01:42
UE字典容量小还可以使用这代码,但上了十多G的字典又怎干掉生日类型的行,,,,,,


放到别的论坛去了?问出结果了吗?
这些正则式命令都是我自己写的,网上搜不到的,要看懂估计要对UE有点使用心得的人!


本帖子中包含更多资源

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

x
回复

使用道具 举报

1142

回帖

2236

积分

1694 小时

在线时间

少校

注册时间
2014-7-21
金币
682 个
威望
23 个
荣誉
8 个
累计签到:43 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-7-25 12:14 |显示全部楼层
哈哈你也在那啊?    @骇客帝国  这个代码是你发的吗

#!/bin/bash

function checkDate(){
    case ${#1} in
    8)
        date -d"$1" &>/dev/null


       return $?
        ;;
    7)  
        date -d"${1:0:4}0${1:4}" &>/dev/null
        

ret1=$?
        date -d"${1:0:6}0${1:6}" &>/dev/null
        ret2=$?
        if [ $ret1

-eq 1 ] && [ $ret2 -eq 1 ];then
           return 1
        else
           return 0
      

  fi
        ;;
    6)
        date -d"${1:0:4}0${1:4:1}0${1:5}" &>/dev/null
        

return $?
        ;;
    *)
        return 1
        ;;
    esac
}

while read line
do
   

dstr=`sed -r 's/[^0-9]*([0-9]*).*/\1/'<<<"$line"`
    checkDate $dstr
    [ $? -eq 1

]&&echo "$line"
done <i
回复

使用道具 举报

4066

回帖

4万

积分

1544 小时

在线时间

少将

不想当将军的新兵

灌水天才

注册时间
2013-2-23
金币
35532 个
威望
461 个
荣誉
14 个
累计签到:240 天
连续签到:1 天
[LV.365]无线熟人
发表于 2014-7-25 12:20 |显示全部楼层
本帖最后由 骇客帝国 于 2014-7-25 12:22 编辑
老AK 发表于 2014-7-25 12:14
哈哈你也在那啊?    @骇客帝国  这个代码是你发的吗

#!/bin/bash


不是!我水平不够,只会使用现成的工具或容易上手的、简单易懂的代码或命令!
回复

使用道具 举报

1142

回帖

2236

积分

1694 小时

在线时间

少校

注册时间
2014-7-21
金币
682 个
威望
23 个
荣誉
8 个
累计签到:43 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-7-25 12:27 |显示全部楼层
你过谦了   
回复

使用道具 举报

1142

回帖

2236

积分

1694 小时

在线时间

少校

注册时间
2014-7-21
金币
682 个
威望
23 个
荣誉
8 个
累计签到:43 天
连续签到:0 天
[LV.50]初入江湖
发表于 2014-7-25 12:28 |显示全部楼层
@骇客帝国   上段代码你试过了没?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

站点统计 | Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

GMT+8, 2024-4-26 06:48

返回顶部 返回列表