【问题标题】:Is it possible to do arithmetics with regular expressions?是否可以使用正则表达式进行算术运算?
【发布时间】:2012-10-18 15:56:29
【问题描述】:

我想知道是否有办法匹配整数及其后继:

我想匹配:“1 Victor 2 Marconi”

但不是:“1 Victor 3 Marconi”

有没有办法反向引用第一个数字并像这样增加它: (\d) [[:alpha:]]* \1 +1 [[:alpha:]]* (INVALID)

我不知道 regexp 是否是正确的工具。如果不是,那会是什么?

【问题讨论】:

    标签: regex backreference


    【解决方案1】:

    你不能用正则表达式做算术。您可以创建一个非常大的正则表达式,用它们的继任者替换有限数量的数字,但不是一般的。

    递增时,总是有进位的可能性 -> 9+1=10.

    你为什么要用正则表达式呢?

    【讨论】:

    • 我不知道如何编写解析器,而且我以前使用正则表达式的经验非常积极——所以我认为这是可行的。我想我会尝试创建一个生成“硬编码”正则表达式的函数。
    • 不能使用正则表达式。您打算在哪里使用正则表达式?编程语言?外壳脚本?
    • 我有一个很大的非结构化文件,里面有一个编号的项目列表。这些项目可以跨越多行。我的第一次尝试是匹配数字之间的任何东西。但是这些项目可以包含数字,所以它会匹配一个不完整的项目。我的下一个想法是只匹配连续数字之间的项目。这样我会匹配整个项目,即使它包含一个数字。我知道正则表达式并不意味着使用非结构化文本,但我觉得这种启发式(一个数字及其后继)会很好用。是的,我使用的是编程语言(Ruby 1.9)。
    • 即使这样也行不通,因为该项目可能包含继任者。
    • 是的,但我不介意出错。感谢您的关注。不幸的是,我无法投票赞成您的答案,因为我没有最低分数。但再次感谢!
    猜你喜欢
    • 2018-06-22
    • 2013-11-28
    • 2015-05-30
    • 2015-07-02
    • 2017-10-03
    • 2022-12-10
    • 1970-01-01
    • 2016-11-30
    • 2010-10-02
    相关资源
    最近更新 更多