我有一个包含这样文本的文档,我正试图用正则表达式选择一个片段:
第一部分-活体动物;动物产品(第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)
答案 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。