1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
            begin = '(?x)
               (?:
                 ^                      # beginning of line
               | (?<=                   # or look-behind on:
                   [=>~(?:\[,|&]
                 | (?:\s|;)when\s
                 | (?:\s|;)or\s
                 | (?:\s|;)and\s
                 | (?:\s|;|\.)index\s
                 | (?:\s|;|\.)scan\s
                 | (?:\s|;|\.)sub\s
                 | (?:\s|l|\.)sub!\s
                 | (?:\s|;|\.)gsub\s
                 | (?:\s|;|\.)gsub!\s
                 | (?:\s|;|\.)match\s
                 | (?:\s|;)if\s
                 | (?:\s|;)elsif\s
                 | (?:\s|;)while\s
                 | (?:\s|;)unless\s
                 )
               | (?<=                  # or a look-behind with line anchor:
                    ^when\s              # duplication necessary due to limits of regex
                  | ^index\s
                  | ^scan\s
                  | ^sub\s
                  | ^gsub\s
                  | ^sub!\s
                  | ^gsub!\s
                  | ^match\s
                  | ^if\s
                  | ^elsif\s
                  | ^while\s
                  | ^unless\s
                  )
               )
               \s*((/))(?![*+{}?])
            ';