huamsd 2023-02-02 16:51 采纳率: 100%
浏览 207
已结题

怎样提取只有大小写字母与数字混合的8位字符串

8位字符,仅支持字母大小写和数字三种混合
字母数字位置不定,大小写不定,字符长度是8位,数字不超过4个,
同时,还不能是纯数字,纯字母组成.怎样写正则表达式?

下面是样例文本:
3snkagj5
linwailin
Lolylh00
eyqts4ug
gdchenbin5
840516cb
68686868
hmupvgp8
wangdong123
6god8m2y
tiayulong
124548277
Luxibing
whgr7dmw
97y3jf0w
npmjp96h
ne7ja%5m
gh9bydrw
cesx444442
321456987
200019zph
2616831024
Windowsme
dadaxing@
Panfeng999
Mnbvcxz1
Zl506a90
197254999
zw105zw105
Ay105105
hnsysdldh
aiolos2005
Jlingsoul
Eckingsoul
marioas110
longxiaoge
Songsong
h3gazxuv
df_feeling
Df825138
helongxiang
9887421810
liqiwwww
4md3lmwg
wangxin5433
Gg790304
lingxue00
800318052
nlgs6wue
pzD3taUc
cc8691215
jsjjcaizhong
198212123
huangbangmian
802825829
wisely2001
qweqw123478
123123ww
5CYL8EMZ
huanghaoyi2000
wangyan658
Hujiaying520
jeffdong0303
xusheng223

提取成功后:
Lolylh00
Mnbvcxz1
3snkagj5
eyqts4ug
hmupvgp8
6god8m2y
whgr7dmw
97y3jf0w
npmjp96h
ne7ja%5m
gh9bydrw
h3gazxuv
4md3lmwg
nlgs6wue
pzD3taUc
5CYL8EMZ

求正则表达式

  • 写回答

4条回答 默认 最新

  • KingRumn 2023-02-05 12:54
    关注

    直接通过正则表达式判断数字的个数不多于4个,我也不知道怎么办。但是可以考虑把这个条件单独判断,
    先选择符合其他条件的所有行,然后通过shell筛选数字个数符合条件的行。

    
    grep -Po '^(?!\d+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{8}$' a.txt | while read line; do num=`echo $line | grep -Po "\d{1}" | wc -l`; if (( $num < 5 )); then echo $line; fi ; done;
    
    

    你的结果里面多了个带%的行,不知道是笔误还是怎样

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月13日
  • 已采纳回答 2月5日
  • 修改了问题 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。