我试图用regex替换Python中的一些文本。你知道吗
我的文字如下:
WORKGROUP 1. John Doe ID123, Jane Smith ID456, Ohe Keedoke ID7890
Situation paragraph 1
WORKGROUP 2. John Smith ID321, Jane Doe ID654
Situation paragraph 2
我想做的是把名字放在双方括号里,去掉id,这样它就会变成这样。你知道吗
WORKGROUP 1. [[John Doe]], [[Jane Smith]], [[Ohe Keedoke]]
Situation paragraph 1
WORKGROUP 2. [[John Smith]], [[Jane Doe]]
Situation paragraph 2
到目前为止我有这个。你知道吗
re.sub(r"(WORKGROUP\s\d\.\s)",r"\1[[")
re.sub(r"(WORKGROUP\s\d\..+?)(?:\s\b\w+\b),(?:\s)(.+\n)",r"\1]], [[\2")
re.sub(r"(WORKGROUP\s\d\..+?)(?:\s\b\w+\b)(\n)",r"\1]]\2")
这适用于有两个人的组(工作组2),但如果有两个以上的人,则保留除第一个和最后一个以外的所有ID。所以第一工作组最后是这样的。你知道吗
WORKGROUP 1. [[John Doe]], [[Jane Smith ID456, Ohe Keedoke]]
Situation paragraph 1
不幸的是,我不能像这样做
re.sub(r"((\s\b\w+\b),(\s))+",r"\1]], [[\2")
因为它将在情境段落中匹配。你知道吗
我的问题是:有没有可能在一个字符串段中进行多个匹配/替换,而不进行统一的匹配/替换?你知道吗
如果安装了
regex
模块:可能还可以。你知道吗
如果没有,只需在终端中运行:
或者
在这里,我们假设您的文本中可能存在其他
ID\d+
,否则,如果您不这样做,您的问题将非常简单。你知道吗测试
输出
如果您希望简化/修改/探索表达式,在regex101.com的右上面板中已经对其进行了解释。如果您愿意,还可以在this link中查看它如何与一些示例输入匹配。你知道吗
您可以嵌套替换并使第一个替换首先查找以
WORKGROUP
开头的行,然后让第二个替换查找并替换其中的公共分隔标记:因此:
表达式返回:
演示:https://repl.it/@blhsing/BoldElderlyQuerylanguage
代码
输出
相关问题 更多 >
编程相关推荐