It won't work on numbers in a single column as the first and last character is the same which will essentially remove it and give you nothing in its place. The solution I provided will work for any of the ones you listed in the original post and even if they are non matching (say [ with } as an example).
You can then just do it like the below? If you want it different then you'll have to specify your problem better.
#> Warning: package 'dplyr' was built under R version 3.6.3
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> filter, lag
#> The following objects are masked from 'package:base':
#> intersect, setdiff, setequal, union
df <- data.frame(
v1 = c("<Lisbon>", "<London>", "(London/Paris)", "[420-Tokyo]"),
v2 = c(1:4) # ***added a new column***
df2 <- df %>% mutate(v1 = gsub('^.|.$', '', unlist(v1)) %>% as.data.frame())
#> . v2
#> 1 Lisbon 1
#> 2 London 2
#> 3 London/Paris 3
#> 4 420-Tokyo 4
<sup>Created on 2020-09-27 by the [reprex package](https://reprex.tidyverse.org) (v0.3.0)</sup>