R 正则表达式帮助:Perl 的修饰符 + 前瞻性过于激进
R regex help: Perl s modifier + lookahead too aggressive
我正在尝试使用 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
如何修改正则表达式,使前瞻在第一次出现时停止?
让它不贪心试试这个:
(?<=A)(?s:.)+?(?=B)
这是一个特殊情况,使用 Dot-All
、点和量词应该
不被使用。读起来很混乱,没有传达它的真正意图。
(?<=A)[^B]+(?=B)
我正在尝试使用 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
如何修改正则表达式,使前瞻在第一次出现时停止?
让它不贪心试试这个:
(?<=A)(?s:.)+?(?=B)
这是一个特殊情况,使用 Dot-All
、点和量词应该
不被使用。读起来很混乱,没有传达它的真正意图。
(?<=A)[^B]+(?=B)