我正在尝试使用R gsub("regexp", "", string, perl=T)
删除两个给定子串之间的所有字符(包括换行符)(即用空字符串替换所有匹配)。
到目前为止我所使用的是正则表达式(?<=A)(?s:.)+(?=B)
,其中我使用s
修饰符来使.
匹配换行符。问题是,当前瞻B
出现多次时,我只想删除A和第一个B之间的任何内容:
我有A remove \r\n this B but leave this B
我想要AB but leave this B
但到目前为止,我得到的是AB
如何修改正则表达式以使前瞻在第一次出现时停止?
答案 0 :(得分:3)
让它非贪婪试试这个:
(?<=A)(?s:.)+?(?=B)
答案 1 :(得分:2)
这是使用Dot-All
,点和量词应该为的特定情况
不被使用。对它的阅读令人困惑,并没有传达其真正的意图。
(?<=A)[^B]+(?=B)