我需要与URL匹配的正则表达式并返回所需的值
示例(如果URL匹配)
1. http://example.com/amp
2. http://example.com/amp/
3. http://example.com/amp~
THEN
它应该返回:?amp=1
ELSE
它应该返回:false
答案 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)