Regex 在 Regexr 工具中工作,但在 PHP 中不工作
Regex working in Regexr tool, but not in PHP
我的目标是从连接子句中检索别名。
这是我的正则表达式:/(.*)rqd_evenements (?:as )([a-z_\-A-Z]+)(.*)/i
示例字符串:
LEFT JOIN rqd_term_relationships ON (rqd_posts.ID = rqd_term_relationships.object_id) JOIN rqd_icl_translations t ON rqd_posts.ID = t.element_id AND t.element_type = CONCAT('post_', rqd_posts.post_type) INNER JOIN rqd_evenements AS ev ON ev.post_id = ID
我做一个 preg_replace:
preg_replace($regex, '', $sample_string);
这导致:
LEFT JOIN rqd_term_relationships ON (rqd_posts.ID = rqd_term_relationships.object_id) JOIN rqd_icl_translations t ON rqd_posts.ID = t.element_id ev
预期结果:ev
令我困惑的是它在 RegExr 中工作:https://regexr.com/46hil
您不需要所有这些捕获组。
/rqd_evenements (?:as )?\K[\w-]+/i
如果您只想提取子字符串,请使用 preg_match() 作为对 [0] 元素的访问。
也许您的模式不适用于您的实时查询字符串,因为您的换行符与点元字符不匹配。 s
flag 可以解决这个问题。
与preg_replace:
/.*rqd_evenements (?:as )?([\w-]+).*/is
替换为
。
我的目标是从连接子句中检索别名。
这是我的正则表达式:/(.*)rqd_evenements (?:as )([a-z_\-A-Z]+)(.*)/i
示例字符串:
LEFT JOIN rqd_term_relationships ON (rqd_posts.ID = rqd_term_relationships.object_id) JOIN rqd_icl_translations t ON rqd_posts.ID = t.element_id AND t.element_type = CONCAT('post_', rqd_posts.post_type) INNER JOIN rqd_evenements AS ev ON ev.post_id = ID
我做一个 preg_replace:
preg_replace($regex, '', $sample_string);
这导致:
LEFT JOIN rqd_term_relationships ON (rqd_posts.ID = rqd_term_relationships.object_id) JOIN rqd_icl_translations t ON rqd_posts.ID = t.element_id ev
预期结果:ev
令我困惑的是它在 RegExr 中工作:https://regexr.com/46hil
您不需要所有这些捕获组。
/rqd_evenements (?:as )?\K[\w-]+/i
如果您只想提取子字符串,请使用 preg_match() 作为对 [0] 元素的访问。
也许您的模式不适用于您的实时查询字符串,因为您的换行符与点元字符不匹配。 s
flag 可以解决这个问题。
与preg_replace:
/.*rqd_evenements (?:as )?([\w-]+).*/is
替换为。