我尝试使用正则表达式在字符串中执行以下操作:
-
,我们必须删除它:
A-BA
应为ABA
;和A-B-BAB
应该是ABBAB
-
:
9AHYA7
应为9-AHYA-7
;而且977AB99T5
应该是977-AB-99-T-5
这些模式只是简单的例子。字符串可能更复杂,如下所示:
HS98743YVJUHGF78BF8HH3JHFC83438VUN5498FCNG
7267-VHSBVH8737HHC8C-HYHFWYFHH-7Y84743YR8437G
在上述字符串中,必须包含相同的原则
我尝试使用以下代码将8T
转换为8-T
re.sub(r'\dab-d', '\d-ab-d', s)
不幸的是,它不起作用。我不知道怎么做
您可以使用2个具有lookarounds的捕获组,在替换中使用lambda来检查哪个组匹配
如果组1匹配,则删除最后一个字符。如果组2匹配,则附加连字符
解释
(
捕获组1[A-Z]-(?=[A-Z])
匹配A-Z和-并断言右边的是A-Z)
闭合群|
或(
捕获第2组[A-Z](?=[0-9])
匹配A-Z并断言右边的是数字|
或[0-9](?=[A-Z])
匹配0-9并断言右边的是A-Z)
闭合群Regex demoPython demo
示例代码
输出
如果您想使用
re.sub
,那么有一种方法,使用捕获组:这张照片是:
相关问题 更多 >
编程相关推荐