楼主: hshly
877 11

[问答] 请教一个正则表达式怎么写,谢谢 [推广有奖]

  • 1关注
  • 25粉丝

高级会员

学术权威

0%

还不是VIP/贵宾

-

威望
0
论坛币
1765027 个
通用积分
517.7434
学术水平
13 点
热心指数
17 点
信用等级
8 点
经验
37292 点
帖子
878
精华
0
在线时间
8531 小时
注册时间
2004-12-13
最后登录
2024-4-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教一个正则表达式的写法:
a='abc123dd234'

第一个问题:
现有一个数字45,
将a改为abc45dd234

第二个问题:
现有一个数字456,
将a改为abc456dd234


即只将遇到的第一组数字替换,不是所有数字替换

谢谢

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:正则表达式 表达式 ABC

沙发
xjg 发表于 2018-4-19 18:42:06 |只看作者 |坛友微信交流群
here you go:
####
import re
a = 'abc123dd234'
p1 = re.compile(r'\d+(?=\D+)')
a1 = p1.sub(r'45', a)
a2 = p1.sub(r'456',a)

print(f'a1 should be: {a1}, and a2: {a2}')
已有 1 人评分热心指数 收起 理由
hshly + 5 精彩帖子

总评分: 热心指数 + 5   查看全部评分

使用道具

藤椅
hshly 发表于 2018-4-19 22:33:00 |只看作者 |坛友微信交流群
谢谢xjg

使用道具

板凳
hshly 发表于 2018-4-19 22:41:53 |只看作者 |坛友微信交流群
好像还不行,比如
a = 'abc123dd234fhgg'
p1 = re.compile(r'\d+\D+?')

后面的数字还是变,我的目的是想要123变成45或者456,后面所有的数字都不能动

使用道具

报纸
xjg 发表于 2018-4-19 22:54:28 |只看作者 |坛友微信交流群
import re
a = 'abc123dd234fhgg'
p1 = re.compile(r'(?<=\D\D\D)\d+')
a1 = p1.sub(r'45', a)
a2 = p1.sub(r'456',a)

print(f'a1 should be: {a1}, and a2: {a2}')
已有 1 人评分热心指数 收起 理由
hshly + 5 精彩帖子

总评分: 热心指数 + 5   查看全部评分

使用道具

地板
hshly 发表于 2018-4-19 23:02:17 |只看作者 |坛友微信交流群
结果可以了,您能解释一下(?<=\D\D\D),这种REs写法没怎么见?谢谢

使用道具

7
xjg 发表于 2018-4-19 23:02:53 |只看作者 |坛友微信交流群
import re
a = 'abc123dd234fhgg'
p1 = re.compile(r'\d+(?=\D+)')
a1 = p1.sub(r'45', a,1)
a2 = p1.sub(r'456',a,1)

print(f'a1 should be: {a1}, and a2: {a2}')

使用道具

8
xjg 发表于 2018-4-19 23:03:25 |只看作者 |坛友微信交流群
这个也可以

使用道具

9
hshly 发表于 2018-4-19 23:05:44 |只看作者 |坛友微信交流群
嗯,可以,谢谢

使用道具

10
hshly 发表于 2018-4-19 23:06:37 |只看作者 |坛友微信交流群
(?=\D+)或者(?<=\D\D\D),您这个写法能解释一下吗?有点困惑,谢谢

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 16:49