带有反斜杠和引号的Gsub

问题描述 投票:0回答:1

我正在尝试使用 gsub 从字符串中删除字符和特殊字符,我已经删除了大部分字符,但仍在处理反斜杠和引号。我只是想获取位置和道路,但由于 \ 和引号,似乎无法获取,我知道它们是作为特殊字符处理的,所以我需要使用反斜杠来表示这一点,但似乎无法获取它正确。

mystring = '"<xml><timestamp>1709060455</timestamp><list id=\"2024\" name=\"London,UK M25\" surface=\"?\" time_dif=\"18000\"'

my attempt
aa = gsub(".+name=\"(.+) .+", "\\1", mystring)
result
"London,UK M25\" surface=\"?\""

What im trying to get
London,UK M25
r regex gsub
1个回答
0
投票

我想我喜欢 R 的“原始字符串”。此外,我们不需要

gsub
,一件事
sub
也可以工作。

sub(r"{.+name="([^"]+)".*}", "\\1", mystring)
[1] "London,UK M25"

“原始字符串”允许具有“正常外观”的反斜杠、嵌入引号等,只要字符串以

r"(
开头并以
)"
结尾。
(
)
也可以是
[
/
]
{
/
}
,这对我们来说是有利的,因为我们也在模式中使用了正则表达式括号。

sub(r"{.+name="([^"]+)".*}", "\\1", mystring)
# [1] "London,UK M25"
sub(r"[.+name="([^"]+)".*]", "\\1", mystring)
# [1] "London,UK M25"
© www.soinside.com 2019 - 2024. All rights reserved.