Matching WORD pattern through regex

bash, regex, word-boundaries

Solution

The regex you are probably looking for would be

"\b([fh]i|k)\w*(eld|ed)\b"

The `\w*` should be equivalent to `[a-zA-Z0-9_]*`, so that will allow any word-like characters be between requested strings.

The `\b` is there to ensure, that the word really starts and ends with letters you want. Otherwise you might for example match string which contains word `Unfailed`

Also you need to remove `$` and `^` from the regex because `$` means end of line and `^` the beginning of line.

Problem

Assume i have a big paragraph, in which there are words are like `found` `field` `failed` `fired` `killed` (so many negative words i know!!) Now, I want to fetch line which have words starting from `fi` `hi` or `k` and ends with `eld` or `ed` How would i go about searching this pattern of word in string....?? keep in check that i am asking about word pattern in string, not string pattern These 2 surely didn't worked ``` egrep "^(f[ai]|k)+(eld|ed)$" ``` and ``` egrep "\<(f|k)+(eld|ed)$\>" ``` I'll admit i am not a hulk of `regex`, doing it out of basic understanding, so any one willing to suggest a better way (with some description) is most welcome too!! :)

Original source