如何基于regex突出显示子字符串并将其转换为Excel或HTML?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

我有以下数据框架:

dat <-  structure(list(value = c("YMNSMQEML", "FIYRHMFCV", "VLFKFDMFI", 
"KLLDRFPVA", "RVLDDFTKL")), .Names = "value", row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

dat
#>       value
#> 1 YMNSMQEML
#> 2 FIYRHMFCV
#> 3 VLFKFDMFI
#> 4 KLLDRFPVA
#> 5 RVLDDFTKL

鉴于以下情况正则表达式L.{2}[FR]我想要创建一个Excel,其中的子字符串突出显示为粗体。

我怎样才能做到这一点?

提问于
用户回答回答于

若要在Excel中执行此操作,请访问Characters的属性Range对象:(内容需要是实际字符串,而不是返回字符串的公式)

Option Explicit
Sub boldSubString()
    Dim R As Range, C As Range
    Dim RE As Object, MC As Object
    Const sPat As String = "L.{2}[FR]"

'Range to be processed
Set R = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))

'Initialize Regex engine
'Could use early binding if desireable
Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = False
    .ignorecase = True
    .Pattern = sPat

    For Each C In R
        C.Font.Bold = False
        If .test(C.Text) Then
            Set MC = .Execute(C.Text)
            C.Characters(MC(0).firstindex + 1, MC(0).Length).Font.Bold = True
        End If
    Next C
End With

End Sub

用户回答回答于

因为你也提到了HTML,所以你可以生成一个Rmarkdown HTML文档,并通过<b></b>标签。使用str_replace函数的stringr

---
output:
  html_document: default
title: "Pattern"
---


```{r echo = FALSE}

你的数据

dat<-Structure(List(value=c(“YMNSMQEML”)、“FIYRHMFCV”、“VLFKFDMFI”),

(“KLLDRFPVA”、“RVLDDFTKL”)、.Names=“value”、row.name=c(NA、

-5L),class=c(“tbl_df”,“tbl”,“data.framework”)

模式<-“(L.{2}Fr)“#放在括号中,以便在str_替换as\1中重用它。

用粗体标记环绕\1组

dat$value<-str_reve(dat$value,Pattern),“<b>\一</b>“)

针织品:Kable(Dat)

扫码关注云+社区

领取腾讯云代金券