REGEX - match the Nth word of a line containing a specific word -
i'm trying correct regex task:
match nth word of line containing specific word
for example:
input:
this first line - blue second line - green third line - red
i want match 7th word of lines containing word «second»
desired output:
green
does know how this?
i'm using http://rubular.com/ test regex.
i tried out regex without success - matching next line
(.*second.*)(?<data>.*?\s){7}(.*)
--- updated ---
example 2
input:
this foo line - blue bar line - green test line - red
i want match 4th word of lines containing word «red»
desired output:
test
in other words - word want match can come either before or after word use select line
you can use match line containing second
, grab 7th word:
^(?=.*\bsecond\b)(?:\s+ ){6}(\s+)
make sure global , multiline flags active.
^
matches beginning of line.
(?=.*\bsecond\b)
positive lookahead make sure there's word second
in particular line.
(?:\s+ ){6}
matches 6 words.
(\s+)
7th.
you can apply same principle other requirements.
with line containing red
, getting 4th word...
^(?=.*\bred\b)(?:\s+ ){3}(\s+)
Comments
Post a Comment