gpt4 book ai didi

python - 匹配数字的正则表达式(正则和罗马)

转载 作者:行者123 更新时间:2023-12-04 02:37:31 25 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来匹配常规数字(1、2、42...)和罗马数字(X、VII...)。

但是the one I've currently wrote :

\b((?=[MDCLXVI])M{0,3}(C[MD]|D?C{0,3})(X[CL]|L?X{0,3 })(I[XV]|V?I{0,3}))\b|\b\d+\b

比预期更匹配。它有 9 场比赛,而我预计只有 4 场:

  • 十二
  • 2
  • 12

我该如何解决?

最佳答案

您真的不需要在您的正则表达式中进行任何前瞻。

您的正则表达式可以简化并重构为:

/
\b
(?:
[MDCLXVI]M{0,3}C[MD]
|
D?C{0,3}X[CL]
|
L?X{0,3}I[XV]
|
[XV]I{0,3}
|
I{1.3}
|
\d+
)
\b
/gix

Updated RegEx Demo

请注意,我在正则表达式中使用了 x(扩展模式),这样正则表达式将忽略所有空格,这允许您在多个交替之间进行适当的缩进,使您的正则表达式更具可读性。我不知道罗马数字的所有排列,所以我建议您重新检查每一个排列。

关于python - 匹配数字的正则表达式(正则和罗马),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60968023/

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