gpt4 book ai didi

Python 正则表达式。匹配和替换罗马数字

转载 作者:行者123 更新时间:2023-11-28 17:30:36 25 4
gpt4 key购买 nike

需要一些关于正则表达式的帮助。我想匹配一些罗马数字并将它们替换为阿拉伯数字。

首先如果使用(IX|IV|V?I{0,3})来匹配罗马数字(从1到9)。然后我使用 (?:^|\s)(?:\s|$)

最后我有 (?:^|\s)(IX|IV|V?I{0,3})(?:\s|$)

它匹配所有这些变体:

  1. 一些文本VI
  2. 我们到了
  3. 另一个 III 文本

如果我用罗马-阿拉伯语映射定义字典 ​​{'iii': 3, 'IX': 9} - 如何用字典中的值重新匹​​配?它也只匹配第一个 accur,即在 some V then III 中我只得到 V

最佳答案

Also it matches only first accur, i.e. in some V then III i get only V

我假设您使用的是 re.matchre.search,它们只会给您一个结果。我们将使用 re.sub 来解决您的主要问题,因此这不会成为问题。 re.sub 可以接受一个可调用对象。我们用您字典中的相应值替换任何匹配项。使用

re.sub(your_regex, lambda m: your_dict[m.group(1)], your_string)

这假设任何可能的匹配项都在您的 dict 中。如果没有,使用

re.sub(your_regex, lambda m: your_dict[m.group(1)] if m.group(1) in your_dict else m.group(1), your_string)

关于Python 正则表达式。匹配和替换罗马数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com