php - How do I replace a comma separated list of strings with the first occurrence? -


where match (coalesce(f1, f2, f3)) against (?) > 0 match (coalesce(f1)) against (?) > 0 

wanted:

where match (f1) against (?) > 0 match (f1) against (?) > 0 

need substritute coalesce(f1, f2, f2, ...) f1, first string if multiple string present (separated ,) or string itself.

i'm working on this:

#\s*match\s*\((\s*coalesce\s*\((.+)\s*\))\s*\)\s+against#/i 

and i'm capturing both what's inside match (1, what's need replaced) , what's inside coalesce (2, replacement).

how substituite 1 first value inside 2?

replace should start @ coalesce previous part must match. use \k resetting after (where replacing should start). first part match\s*\(\k here starts replacing , pattern continues: \s*coalesce\s*\(\s*([^,)]+)... capturing in first capture group.

and optional part (?:,[^)]*)? meet closing bracket. against part lookahead can used: (?=\)\s*against). whole pattern be:

/match\s*\(\k\s*coalesce\s*\(\s*([^,)]+)(?:,[^)]*)?\)(?=\)\s*against)/i 

and replace captured $1. test @ regex101.com


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -