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 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改