在进行替换操作时,我需要在反向引用中添加一个数字.
例如.我正在重写一个URL
www.site.com/doc.asp?doc=321&language=1
至
www.site.com/headline/100321.article
例如,做一个简单的替换,但我需要向doc id添加100,000.我到目前为止所做的工作没有添加任何内容.
s/.*doc=(\d+).*/www.site.com\/headline\/$1.article/g;
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能增加100,000到1美元?
请注意,您不能在数字前添加"100",因为doc id可能> 999.
Met*_*hox 32
使用Perl:
s/.*doc=(\d+).*/"www.site.com\/headline\/".($1+100000).".article"/e;
Run Code Online (Sandbox Code Playgroud)
正如你已经完成了e旗帜,正确的部分现在变成了一个表达式.所以你必须将非捕获部分包装为字符串.
这在正则表达式中是不可能的。正则表达式只匹配模式,它不做算术运算。
你能做的最好的事情是冗长的,比如:
match replace
(\d{6,}) $1
(\d{5}) 1$1
(\d{4}) 10$1
(\d{3}) 100$1
(\d{2}) 1000$1
(\d) 10000$1
Run Code Online (Sandbox Code Playgroud)