| <#-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <#assign input> |
| L16 |
| L27 |
| L38 |
| L49 |
| </#assign> |
| |
| List mode: |
| <#assign matches = input?matches(".+") > |
| Size: ${matches?size} |
| <#list 0..<matches?size as i>[${matches[i]}]</#list> |
| <#list matches as m>[${m}]</#list> |
| |
| Iterator mode: |
| <#assign matches = input?matches(".+") > |
| <#list matches as m>[${m}]</#list> |
| <#list matches as m>[${m}(${matches?join(', ')})]</#list> |
| <#list matches as m>[${m}]</#list> |
| |
| Iterator mode changes to list mode: |
| <#assign matches = input?matches(".+") > |
| <#list matches as m>[${m}]/${matches?size}</#list> |
| <#list matches as m>[${m}]</#list> |
| |
| Iterator mode changes to list mode 2: |
| <#assign matches = input?matches(".+") > |
| <#list matches as m>[${m}]</#list> |
| <#list matches as m>[${m}]/${matches?size}<#t></#list> |
| |
| List mode with embedded iteration: |
| <#assign matches = input?matches(".+") > |
| <#list 0..<matches?size as i>[${matches[i]}(${matches?join(', ')})]</#list> |
| |
| Entire input match: |
| <#assign matches = input?matches(r".*(\d)(\d)") > |
| <#assign firstGS = false> |
| <#list matches as m> |
| - M: ${m} |
| <#if firstGS?is_boolean> |
| <#assign firstGS = m?groups> |
| </#if> |
| <#list m?groups as g> |
| - G: ${g} |
| </#list> |
| </#list> |
| firstGS was: ${firstGS?join(', ')} |
| |
| Entire input match 2: |
| <#assign match = "x12"?matches(r"x(\d)(\d)") > |
| Matches: ${match?c} |
| <#list match?groups as g> |
| - G: ${g} |
| </#list> |
| As list: |
| <#list match as m> |
| - M: ${m} |
| <#list m?groups as g> |
| - G: ${g} |
| </#list> |
| </#list> |
| Groups again: |
| <#list match?groups as g> |
| - G: ${g} |
| </#list> |
| |
| Entire input match 3: |
| <#assign match = "x12"?matches(r"y(\d)(\d)") > |
| Matches: ${match?c} |
| <@assertEquals expected=3 actual=match?groups?size /> |
| <@assertEquals expected=0 actual=match?size /> |
| |
| Entire input match 4: |
| <#assign match = "x12"?matches(r"x(\d)(\d)") > |
| Matches: ${match?c} |
| <#assign gs = match?groups> |
| <@assertEquals expected=3 actual=gs?size /> |
| <@assertEquals expected=1 actual=match?size /> |
| - G: ${gs[0]} |
| - G: ${match?groups[1]} |
| - G: ${gs[2]} |
| |
| Substring match nested into entire input match: |
| <#assign match = "x12"?matches(r"x(\d)(\d)") > |
| <#list match?groups as g> |
| - G: ${g} (<#list match as m>[${m}{${m?groups?join(', ')}}]</#list>) |
| </#list> |
| |
| Different entire input and substring matches: |
| <#assign match = "123"?matches(r"(\d+?)") > |
| ${match?groups?join(", ")} |
| <#list match as m> |
| - M: ${m} (Gs: ${m?groups?join(", ")}) |
| </#list> |
| |
| Different entire input and substring matches 2: |
| <#assign match = "123"?matches(r"\d+?") > |
| ${match?groups?join(", ")} |
| <#list match as m> |
| - M: ${m} (Gs: ${m?groups?join(", ")}) |
| </#list> |