str_detect中的正则表达式?

时间:2018-05-10 08:11:06

标签: r regex pattern-matching

我的代码如c1c5, c5c1, c4c3 ...

我想要检索以c4c5开头或结尾的所有合欢名。

我尝试过使用以下内容:

str_detect(colnames(df), "c5c\\d+")

str_detect(colnames(df), "c4c\\d+")

str_detect(colnames(df), "c\\d+c4")

str_detect(colnames(df), "c\\d+c5")

有没有办法将它与一个表达式结合起来?请指教。

3 个答案:

答案 0 :(得分:3)

尝试<script> $('#myModal').on('hidden.bs.modal', function () { $('#myModal').removeData('bs.modal'); }); </script> <script> $('#myModal2').on('hidden.bs.modal', function () { $('#myModal2').removeData('bs.modal'); location.reload(); }); </script>

sapply

有了这个,你就可以通过&#34; c4&#34;开始或结束这些名字。或&#34; c5&#34;。

如果你的长度大于4的colnames,或者你想使用不同于&#34; c4&#34;或&#34; c5&#34;你可以用以下方法概括:

colnames(df)[sapply(X = colnames(df), FUN = function (X) substr(X, 1, 2) %in% c("c4", "c5") | substr(X, 3, 4) %in% c("c4", "c5"))]

你甚至可以更多地概括它,依赖于案例。

答案 1 :(得分:2)

您可以使用

str_detect(colnames(df), "^c[54]|c[54]$")

或者,用基数R:

grep("^c[45]|c[45]$", colnames(df))

正则表达式为^c[45]|c[45]$

  • ^ - 字符串开头
  • c - c
  • [45] - 45
  • | - 或
  • c[45] - c4c5 ...
  • $ - ...在字符串的末尾。

答案 2 :(得分:1)

你也可以这样做。即使您在字符串中有多个单词,它也能正常工作。

str_detect(colnames(df), "(\bc[45])|(c[45]\b)")