正则表达式,它匹配URL并返回所需的值

时间:2017-04-21 18:10:25

标签: php regex wordpress

我需要与URL匹配的正则表达式并返回所需的值

示例(如果URL匹配)

1. http://example.com/amp 
2. http://example.com/amp/
3. http://example.com/amp~

THEN

它应该返回:?amp=1

ELSE

它应该返回:false

2 个答案:

答案 0 :(得分:1)

您应该可以使用preg_replace?amp=附加到匹配字符串的末尾。它的功能已经完成了您需要的if / else功能,

  

如果找到匹配项,将返回新主题,否则主题将保持不变,如果发生错误,则返回NULL。

(或我误读了it should return noting

- http://php.net/manual/en/function.preg-replace.php

这样的东西
amp\K( |\/|~)$

应该这样做

$string = 'http://example.com/amp~';
echo preg_replace('/amp\K( |\/|~)$/', '$1?amp=1', $string);

$1是可选的,不确定是否要包含已找到的字符。

PHP演示:https://eval.in/780432

正则表达式演示:https://regex101.com/r/JgcrLu/1/

$是字符串的结尾。 ()是一个捕获和更改组。 |是改动。 \K跳过以前匹配的正则表达式部分。

答案 1 :(得分:0)

您没有指定您正在使用的编程语言,但您可能需要以下内容:

<强> PHP

$new = preg_replace('%/amp\b(?:/|~)?%si', '/?amp=1', $old);

<强>蟒

new_string = re.sub(r"/amp\b(?:/|~)?", "/?amp=1", old_string, 0, re.IGNORECASE)

Regex Demo