使用带有分支重置模式的命名捕获

时间:2015-11-16 15:47:51

标签: regex perl

$recepies =~ s/
                    (?|
                    ([^\.\/]) ($dimentions) 
                    |
                    (\(?) ($wholeNumberDecimal)     #ex: 1.5
                    |
                    (\(?) ($wholeNumber)            #ex: 1
                    |
                    (\(?) ($wholeNumberFraction) 
                    )
                    (\s) ($unit)

                    /transformer($1,$2,$3,$4) /eixg;    #the replacement

我想知道如何在这种情况下命名我的捕获。

例如,我想打电话给第一个"前缀"第二个"数字"第三个"空间"和第四个"单位"

1 个答案:

答案 0 :(得分:1)

可能就像这样做

$recepies =~ s/
     (?|
          (?<prefix> [^\.\/] )                    # (1)
          (?<number> $dimentions )                # (2)
       |  
          (?<prefix> \(? )                        # (1), ex: 1.5
          (?<number> $wholeNumberDecimal )        # (2)
       |  
          (?<prefix> \(? )                        # (1), ex: 1
          (?<number> $wholeNumber )               # (2)
       |  
          (?<prefix> \(? )                        # (1)
          (?<number> $wholeNumberFraction )       # (2)
     )
     (?<space> \s )                          # (3)
     (?<unit> $unit )                        # (4)

/transformer($+{prefix},$+{number},$+{space},$+{unit}) /eixg;    #the replacement

或者像这样

$recepies =~ s/
     (?|
          (?<prefix> [^\.\/] )                    # (1)
          (?<number> $dimentions )                # (2)
       |  
          (?<prefix> \(? )                        # (1), ex: 1.5
          (?<number> $wholeNumberDecimal )        # (2)
       |  
          (?<prefix> \(? )                        # (1), ex: 1
          (?<number> $wholeNumber )               # (2)
       |  
          (?<prefix> \(? )                        # (1)
          (?<number> $wholeNumberFraction )       # (2)
     )
     \s
     $unit

/transformer($+{prefix},$+{number},$unit) /eixg;    #the replacement