Regex 正则表达式:在字符(包括它)第一次出现后获取字符串

Regex 正则表达式:在字符(包括它)第一次出现后获取字符串,regex,.htaccess,redirect,Regex,.htaccess,Redirect,我正在尝试从我的站点获取一些旧链接,用301重定向指令重定向到新链接。我需要完成的是删除字符串的第一部分,直到它匹配连字符,然后删除它(包括连字符) 例如: http://example.com/19731-la-preservacion-de-la-biodiversidad-es-crucial-para-frenar-la-desertificacion-en-zonas-aridas 或 应输出到: http://example.com/la-preservacion-de-la-bi

我正在尝试从我的站点获取一些旧链接,用301重定向指令重定向到新链接。我需要完成的是删除字符串的第一部分,直到它匹配连字符,然后删除它(包括连字符)

例如:

http://example.com/19731-la-preservacion-de-la-biodiversidad-es-crucial-para-frenar-la-desertificacion-en-zonas-aridas

应输出到:

http://example.com/la-preservacion-de-la-biodiversidad-es-crucial-para-frenar-la-desertificacion-en-zonas-aridas

http://example.com/afecta-la-crisis-alimentaria-ya-a-miles-de-personas
到目前为止我已经试过了
RewriteRule^[^-|-](.*)$$1
RewriteRule^([^-]*-)(.*)$$1
但我似乎无法让它工作


谢谢

若要在某个字符(包括该字符)首次出现后获取子字符串,您可以使用与该字符以外的任何字符匹配的,然后您需要启动一个捕获组,将该字符作为其中的第一个原子,并在以下内容后添加
*)

^[^-]*(-.*)$
在这里,
^[^-]*(-.*.$
匹配整个字符串,第一个
-
与它在第1组中登录后的所有字符匹配(
$1
重写规则
中替换)

详细信息

  • ^
    -字符串的开头
  • [^-]*
    -零个或多个字符,而不是
    -
    (否定字符类)
  • (-.*.
    -第1组(
    $1
    ):
    -
    ,然后是任何0+字符
  • $
    -字符串结束
试试:

(.*?\/)\d+-(.*)
替换:

$1$2

尝试查找
^([^/]*/)*)[^-]*-(.*)$
替换
$1$3
演示
$1$2