【问题标题】:How can you print all the characters that satisfy a regular expression?如何打印所有满足正则表达式的字符?
【发布时间】:2010-08-16 16:03:04
【问题描述】:

有没有办法打印出满足给定正则表达式的每个字符?

例如,我可以打印所有匹配正则表达式的字符吗,比如说,在 Javascript 中:

[A-Za-z_-]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]

示例取自Turtle specification

编辑:Toby 和 Peter Boughton 提出的解决方案的 JavaScript 实现。

var out = "",
  str = "";
for (var i = 32; i < 983040; i++) {
  str = String.fromCharCode(i);
  if (str.match(/[A-Za-z_-]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]/)) {
    out += str;
  }
}
console.log(out);

【问题讨论】:

标签: regex unicode


【解决方案1】:

我认为按照您的要求进行操作的唯一方法是逐个循环遍历所有可能的字符并将每个匹配的字符“收集”到某种缓冲区中。

【讨论】:

  • 好吧,但问题是如何生成所有可能的字符?
  • for (i=32;i&lt;983040;i++){ if (chr(i).matches(regex){ output(chr(i)) } } 之类的东西 - 这不是工作代码,但应该给你这个想法。不作为正则表达式实现它会更快。
猜你喜欢
  • 1970-01-01
  • 2012-08-16
  • 2013-01-12
  • 2019-02-13
  • 2020-02-27
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
相关资源
最近更新 更多