转义后,R(无效使用重复运算符)表达式中的正则表达式不起作用

时间:2018-12-07 21:45:49

标签: r regex

我有一个包含这样文本的文档,我正试图用正则表达式选择一个片段:

  

第一部分-活体动物;动物产品(第1-5章)第1章活物

我正在使用此表达式,该表达式在R之外有效:

Section\s[A-Z]+\s?-\s[^(]*+\(Chapter\s[0-9]+-[0-9]+\)

这是我在R中编写表达式的方式(在收到“重​​复操作符无效使用”错误后转义了+),但是表达式不起作用-没任何反应。如果有人能看到我在这里缺少的任何东西,将不胜感激。

Section\\s[A-Z]\\+\\s?-\\s[^(]*\\+\\(Chapter\\s[0-9]+-[0-9]\\+\\)

我正在尝试选择和删除这样的文本:

df=data.frame(x="Section I - Live Animals; Animal Products (Chapter 1-5) Chapter 1 Live Animals ")
df=gsub("Section\\s[A-Z]\\+\\s?-\\s[^(]*\\+\\(Chapter\\s[0-9]+-[0-9]\\+\\)", "", df$x)

1 个答案:

答案 0 :(得分:1)

TRE正则表达式不支持possessive quantifiers,因此*+量词无效。您想要*的量词,因此不要逃脱+,只需删除它即可。

此外,调整输出是有意义的,所以我建议使用

df <- trimws(gsub("Section\\s[A-Z]+\\s?-\\s[^(]*\\(Chapter\\s[0-9]+-[0-9]+\\)", "", df$x))
## => [1] "Chapter 1 Live Animals"

请参见R demo online