Home > Enterprise >  Find specific word between tag start and end
Find specific word between tag start and end

Time:10-29

I need to find a word this within <template> and </template>:

I tried <template>([this])*?<\/template> but it doesn't seem to work.

https://regex101.com/r/VmGESa/1

CodePudding user response:

You do not need the multiline m flag and . doesn't match linebreaks so you have to account for that.

E.g.

<template>(?:.|\r|\n)*?(this)(?:.|\r|\n)*?<\/template>

https://regex101.com/r/krkP9d/1

CodePudding user response:

Your regular expression is matching strings that

  • are starting with <template>,
  • followed by an arbitrary combination of the characters t, h, i or s with arbitrary length, e.g., thssiththissiththhtht would be matched by ([this])*,
  • are ending with </template>,

Does this solution work for you?

<template>(?:.|\n|\r)*(this)(?:.|\n|\r)*<\/template>

.* matches an arbitrary number of arbitrary characters, except for new lines. So, I added \n and \r with the OR operator |. (?:...) means, it's a non-capturing group, i.e., when asking for groups, this group won't show up.

  • Related