May*_*you 7 regex string r substr
我有以下字符串:
string = "asflkjsdhlkjsdhglk<body>Iwant\to+extr@ctth!sstr|ng<body>sdgdfsghsghsgh"
Run Code Online (Sandbox Code Playgroud)
我想在两个<body>
标签之间提取字符串.我要找的结果是:
substring = "<body>Iwant\to+extr@ctth!sstr|ng<body>"
Run Code Online (Sandbox Code Playgroud)
请注意,两个<body>
标记之间的子字符串可以包含字母,数字,标点符号和特殊字符.
有这么简单的方法吗?谢谢!
这是正则表达式方式:
regmatches(string, regexpr('<body>.+<body>', string))
Run Code Online (Sandbox Code Playgroud)
regex = '<body>.+?<body>'
Run Code Online (Sandbox Code Playgroud)
您需要非贪婪(.+?
),以便它不会将尽可能多的<body>
标记分组.
如果您只使用没有辅助功能的正则表达式,那么您将需要一个捕获组来提取所需的内容,即:
regex = '(<body>.+?<body>)'
Run Code Online (Sandbox Code Playgroud)
strsplit() 应该可以帮助你:
>string = "asflkjsdhlkjsdhglk<body>Iwant\to+extr@ctth!sstr|ng<body>sdgdfsghsghsgh"
>x = strsplit(string, '<body>', fixed = FALSE, perl = FALSE, useBytes = FALSE)
[[1]]
[1] "asflkjsdhlkjsdhglk" "Iwant\to+extr@ctth!sstr|ng" "sdgdfsghsghsgh"
> x[[1]][2]
[1] "Iwant\to+extr@ctth!sstr|ng"
Run Code Online (Sandbox Code Playgroud)
当然,这会为您提供字符串的所有三个部分,并且不包括标签。