用于从纯文本中提取Ruby代码的正则表达式?

用于从纯文本中提取Ruby代码的正则表达式?,ruby,regex,Ruby,Regex,我想从纯文本中提取ruby代码片段 使用gem可以提取PDF文档的文本。现在我只想从ruby编程书中获得格式良好的ruby代码 知道ruby方法和类的多行匹配的正则表达式是什么样子吗? 我尝试了许多不同的表达式,但没有得到预期的结果。试试这个 逐行检查文件,并尝试将每一行解析为Ruby代码 如果一行解析为Ruby代码,开始向其添加更多行,直到它们不再解析为Ruby代码 瞧,这是您的第一个代码片段 也许应用一些过滤器来排除像单个单词这样的琐碎片段 重复 这是从非结构化文本(如电子邮件等)中提取

我想从纯文本中提取ruby代码片段

使用gem可以提取PDF文档的文本。现在我只想从ruby编程书中获得格式良好的ruby代码

知道ruby方法和类的多行匹配的正则表达式是什么样子吗? 我尝试了许多不同的表达式,但没有得到预期的结果。

试试这个

  • 逐行检查文件,并尝试将每一行解析为Ruby代码
  • 如果一行解析为Ruby代码,开始向其添加更多行,直到它们不再解析为Ruby代码
  • 瞧,这是您的第一个代码片段
  • 也许应用一些过滤器来排除像单个单词这样的琐碎片段
  • 重复
这是从非结构化文本(如电子邮件等)中提取源代码的常见最佳实践。这已经被用来扫描数百万封研究项目的电子邮件


使用
ripper
core库解析Ruby代码。

Ruby的语法不是常规语言。您可以将其与正则表达式匹配。此外,由于Ruby是非常宽容的,即使您的问题的标题本身也是有效的Ruby代码。仅仅从原始文本中提取ruby代码而忽略其中的散文实际上是不可能的。因为书中的代码通常是格式良好的,所以应该是可能的。但是我认为你需要计算ruby的块打开关键字,以识别一个类或方法何时结束。一切都有可能。我尝试了如下方法:
Yomu.new(“book.pdf”).text.scan(/\nclass\[a-z]*\n.*\nend\n/m)
来提取ruby类。此处使用换行符有助于匹配纯文本的正确部分。请共享指向
pdf
本身的链接。我相信,这些代码有不同的格式,例如,使用单间距字体,这可能会更有帮助,而解析文本时,已经缺少这些信息。谢谢,@akuhn,我喜欢这种方法。