基于R中的正则表达式生成随机字符串

机器算法验证 r 数据挖掘 随机生成 文本挖掘
2022-04-07 22:37:15

我正在尝试基于正则表达式生成随机文本数据。我希望能够在 R 中做到这一点,因为我知道 R 确实具有正则表达式功能。有什么线索吗?

这个问题以前在论坛(StackOverflow Post 1StackOverflow Post 2等)中出现过,但他们总是提到基于其他编程平台(perl,.NET,...)的解决方案,而不是 R。

2个回答

虽然从正则表达式生成随机数据是一个方便的接口,但 R 并不直接支持它。不过,您可以尝试一级间接:生成随机数并将它们转换为字符串。例如,要将数字转换为字符,您可以使用以下命令:

> rawToChar(as.raw(65))
[1] "A"

通过仔细选择要绘制的随机数的范围,您可以将自己限制为可能对应于正则表达式的所需 ASCII 字符集,例如字符类[a-zA-Z]

显然,这既不是优雅的解决方案,也不是有效的解决方案,但它至少是原生的,并且可以通过一些样板文件为您提供所需的效果。

然而,仍然不是一个完美的答案,Mark Heckmann建议使用随机字符串生成器来部分解决这个问题:

GenRandomString <- function(n=1, lenght=12)
{
  randomString <- c(1:n)                  # initialize vector
  for (i in 1:n)
  {
    randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
                                    lenght, replace=TRUE),
                             collapse="")
  }
  return(randomString)
}
GenRandomString(5,8)

输出:5 个随机字符串,8 个字符长

[1] "l42DjAtc" "jW6TdRZw" "5aAvMuDL" "iC3xOvst" "gqgSzE83"

这可以用于各种情况,例如生成密钥、名称、模拟等。