首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex字符串模式插入操作

Regex字符串模式插入操作
EN

Stack Overflow用户
提问于 2021-05-05 10:15:39
回答 1查看 52关注 0票数 1

输入字符串:

蛋白酶激活受体-2(IS)-1α、-8、-97、-2α和-3是特异性拮抗剂。角质形成细胞的LL-37、-15、SAC-1、-7和-21较好。

输出字符串:

蛋白酶激活受体-2(IS)-1α,皮肤间(IS)-8,皮肤间(IS)-97,皮肤间(IS)-2α,-3为特异性拮抗剂。角质形成细胞的LL-37、LL-15、SAC-1、SAC-7和SAC-21较好。

预期输出为:

蛋白酶激活受体-2皮肤间(IS)-1α,皮肤间(IS)-8,皮肤间(IS)-97,皮肤间(IS)-2α和皮肤间(IS)-3为特异性拮抗剂.角质形成细胞的LL-37、LL-15、SAC-1、SAC-7和SAC-21较好。

我不会在输出字符串中获得interskin (IS)-3部件。请查看我的代码并提出解决方案。

代码语言:javascript
复制
import re
string_a = "The Proteinase-Activated Receptor-2 interskin (IS)-1ALPHA, -8, -97, -2ALPHA, and -3 was specific antagonist. The LL-37, -15, SAC-1, -7, and -21 in keratinocytes was good."
print(string_a)
pattern = re.compile(r"\b([A-Za-z]+\s*\([A-Z]+\)|[A-Z]+)(\s*-\d+[A-Z]+(?:,*\s*-\d+)*|\s*-\d+(?:,*\s*-\d+)*)(?:,*\s*and\s+(-\d+))?")
print('\n')
print(pattern.sub(lambda x: x.group(1) + f', {x.group(1)}'.join(map(str.strip, x.group(2).strip().split(','))) + (f' and {x.group(1)}{x.group(3)}' if x.group(3) else ''), string_a))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 11:10:06

使用您的模式和代码,您可以在第二个替换的组末尾添加匹配的可选大写字符[A-Z]*

代码语言:javascript
复制
\b([A-Za-z]+\s*\([A-Z]+\)|[A-Z]+)(\s*-\d+[A-Z]+(?:,*\s*-\d+[A-Z]*)*|\s*-\d+(?:,*\s*-\d+)*)(?:,*\s*and\s+(-\d+))?
                                                           ^^^^^^

Regex演示

示例

代码语言:javascript
复制
import re
string_a = "The Proteinase-Activated Receptor-2 interskin (IS)-1ALPHA, -8, -97, -2ALPHA, and -3 was specific antagonist. The LL-37, -15, SAC-1, -7, and -21 in keratinocytes was good."
pattern = re.compile(r"\b([A-Za-z]+\s*\([A-Z]+\)|[A-Z]+)(\s*-\d+[A-Z]+(?:,*\s*-\d+[A-Z]*)*|\s*-\d+(?:,*\s*-\d+)*)(?:,*\s*and\s+(-\d+))?")
print(pattern.sub(lambda x: x.group(1) + f', {x.group(1)}'.join(map(str.strip, x.group(2).strip().split(','))) + (f' and {x.group(1)}{x.group(3)}' if x.group(3) else ''), string_a))

输出

蛋白酶激活受体-2皮肤间(IS)-1α,皮肤间(IS)-8,皮肤间(IS)-97,皮肤间(IS)-2α和皮肤间(IS)-3为特异性拮抗剂.角质形成细胞的LL-37、LL-15、SAC-1、SAC-7和SAC-21较好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67399331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档