0

I wondered how I could only grab the last 3 chars of a string only containing a given substring. For example, I want to grab every -%} that does have the substring "assign" or "liquid" preceding it. In this case, I'd only want the -%} from lines 1, 2, and 8.

1 {%- assign weather = rain -%}
2 {%- assign num_apples = 10 -%}

3 {%- render 'thing' -%}

4 {%- liquid  
5   if true
6     return
7   endif 
8  -%}

Note that this is being used for a find and replace. I'm using ShellJS if that helps.

I can't seem to get closer than these:

(?=assign)*.{3}$

(?=(?<=assign )).*

(?={%- assign )(.*){3}$
Ken White
  • 123,280
  • 14
  • 225
  • 444
Katie L
  • 3
  • 1

1 Answers1

1

This works well with JS.

(?<={%-\s*?(?:assign|liquid)\s[^{}]*?(?=-%}))-%}

See live demo.

SaSkY
  • 1,086
  • 1
  • 4
  • 14