代码之家  ›  专栏  ›  技术社区  ›  Jamie Chapman

如何使用正则表达式拆分收款单?

  •  1
  • Jamie Chapman  · 技术社区  · 14 年前

    有谁能告诉我如何把这篇文章分成三组(数量,名称,价格)吗?

      1 Corn Dog             5.00
      3 Corn Dog            15.00
        @ 5.00
      2 Diet Cola            4.00
        @ 2.00
    

    我自己也试过跟着 http://www.regular-expressions.info/reference.html 但这些符号正变得势不可挡!我想开始做一些有趣的字符串操作作为一个计划B。

    我使用的是Objective-C,所以我可能会使用NSPredicate来执行表达式。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Bill Gribble    14 年前

    一个方便的工具: Online RegEx Tester

    我会从 ^\([:digit]+\)[:space:]*\(.*\)[:space:]\([:digit:]+\.[:digit:]{2}\)

    ()[]*+|

        2
  •  1
  •   Vantomex    14 年前

    我喜欢这个正则表达式:

    ^\s*(\d+)\x09+([^\x09]+)\x09+\s*(.+)\s*$
    

    您可以将捕获组称为 \1 , \2 , \3 如果将它称为regex的搜索部分,则可以将捕获组称为 $1 $2 , $3 如果你提到它的regex的替换部分。

    但是,我的regex要求您用一个或多个制表符分隔每个字段。我这样做是因为用空格分隔会引起歧义,所以正则表达式会更长。