首頁>Program>source

執行替換操作時,我需要在反向引用中添加一个數字。

例如.我正在重寫URL

www.site.com/doc.asp?doc=321&language=1

www.site.com/headline/100321.article

例如 做一个簡單的替換,但我需要在文件ID中添加100,000.到目前為止,我下面的內容在不添加任何內容的情况下仍然有效。

s/.*doc=(\d+).*/www.site.com\/headline\/$1.article/g;

但是如何將100,000加到$ 1?

請註意,您不能仅在數字前添加'100',因為文件ID可能是>999。

最新回復
  • 5月前
    1 #

    使用Perl:

    s/.*doc=(\d+).*/"www.site.com\/headline\/".($1+100000).".article"/e;
    

    就像使用e標志一樣,右邊的部分現在成為表達式.因此必须將非捕获部分包裝為字元串。

  • 5月前
    2 #

    在正則表達式中是不可能的.正則表達式仅匹配模式,不執行算術運算。

    您能做的最好的事情就是像這樣:

    match       replace
    (\d{6,})    $1
    (\d{5})     1$1
    (\d{4})     10$1
    (\d{3})     100$1
    (\d{2})     1000$1
    (\d)        10000$1
    

  • 5月前
    3 #

    如果您只有几篇文章,就可以蛮力地

    ...doc=322 -> www.site.com/headline/100322.article
    ...doc=323 -> www.site.com/headline/100323.article
    ...doc=324 -> www.site.com/headline/100324.article
    ...etc
    

    使用正則表達式的數學運算,您首先在這裏看到它。

  • java:如何从位元組中提取MimeType []
  • c#:設置TabPage標頭颜色