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日

悬赏问题

  • ¥20 ue5运行的通道视频都会有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数