我有一个字符串"ab b cde"
,即"ab[space]b[space]cde"
。我想用空格替换“space-b”和“space-c”,以便输出字符串为"ab[space][space][space][space]de"
。我无法弄清楚如何在不删除第一个“b”的情况下摆脱第二个“b”。我试过了:
gsub("[\\sb,\\sc]", " ", "ab b cde", perl=T)
但这给了我"a[spaces]de"
。有什么指针吗?感谢。
编辑:考虑一个更复杂的问题:我想通过删除"akui i ii"
和"akui[space]i[space]ii"
将字符串"akui[spaces|"
即"space-i"
转换为"space-ii"
。< / p>
答案 0 :(得分:6)
[\sb,\sc]
表示“空格中的一个字符b
,,
,空格,c
”。
您可能想要(\sb|\sc)
之类的内容,这意味着“空格后跟b
,空格后跟c
”
或\s[bc]
表示“空格后跟b
或c
”。
s <- "ab b cde"
gsub( "(\\sb|\\sc)", " ", s, perl=TRUE )
gsub( "\\s[bc]", " ", s, perl=TRUE )
gsub( "[[:space:]][bc]", " ", s, perl=TRUE ) # No backslashes
要删除多个字母实例(如第二个示例所示),请在要删除的字母后添加+
。
s2 <- "akui i ii"
gsub("\\si+", " ", s2)
答案 1 :(得分:5)
有一个简单的解决方案。
gsub("\\s[bc]", " ", "ab b cde", perl=T)
这会给你你想要的。
答案 2 :(得分:2)
您可以像这样使用lookbehind matching:
gsub("(?<=\\s)i+", " ", "akui i ii", perl=T)
编辑: lookbehind仍然是要走的路,用你原来的帖子中的另一个例子来证明。希望这会有所帮助。
答案 3 :(得分:0)
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { Application.class })
@Slf4j
public class RequestEntityValidatorsTests {
请注意第二个参数中的 double 空格。