s2e-lab/RegexEval
收藏数据集卡片 for RegexEval
数据集概述
Re(gEx|DoS)Eval 是一个框架,包含来自真实用户的 762 个正则表达式描述(提示),经过精炼的提示和示例,以及一组强大的测试。
数据集详情
数据集描述
- 由以下人员策划: Mohammed Latif Siddiq, Jiahao Zhang, Lindsay Roney, 和 Joanna C. S. Santos
- 语言: 英语
数据集结构
- 文件格式: jsonl
- 字段:
id: 样本的唯一标识符。raw_prompt: 来自真实用户的原始提示,包含正则表达式的描述。refined_prompt: 经过精炼的提示,包含正则表达式的描述。matches: 正则表达式的匹配示例。non-matches: 正则表达式的非匹配示例。
数据集创建
源数据
我们从 RegExLib 中挖掘了所有正则表达式,这是一个包含用户贡献的正则表达式的库。我们从 RegExLib 获得了 4,128 个正则表达式及其 id、描述和预期匹配及非匹配字符串列表。
数据收集和处理
对于每个收集的样本,我们进行了手动验证,以(1)过滤掉不正确的正则表达式,(2)创建更多的样本测试用例(即匹配和非匹配字符串示例),以及(3)创建精炼的问题描述(即提示)。我们排除了任何符合以下条件的正则表达式:(i)缺少任何元数据,即描述和/或预期匹配和非匹配列表;(ii)其描述不是用英语编写的;(iii)其描述包含粗俗词汇;(iv)其描述没有提供足够的信息来理解正则表达式的用途;(v)它旨在检测单个单词;(vi)它是不正确的(即正则表达式匹配了不应该匹配的字符串,或者没有匹配预期应该匹配的字符串)。经过这一步骤后,我们有 1,001 个正则表达式样本。
每个收集的正则表达式样本平均只有 4 个字符串示例(2 个预期匹配和 2 个预期非匹配)。因此,我们手动创建了额外的测试用例,以确保每个样本至少有 13 个匹配和 12 个非匹配字符串示例。在创建这些额外的测试字符串后,我们再次使用新的测试用例集评估正则表达式,并排除了失败的正则表达式样本。因此,我们的最终数据集有 762 个样本。
在对提取样本的描述进行进一步检查后,我们发现其中一些缺乏更详细的解释(例如,ID#84: “SQL 日期格式测试器。”)或有与正则表达式无关的额外信息(例如,ID#4: “... 除此之外,这只是我用来测试我的首页在非常长的表达式描述情况下会如何显示的一个正则表达式的非常非常长的描述”)。因此,我们创建了一个精炼的提示,其中包含正则表达式的清晰描述,包括三个匹配和两个非匹配字符串示例。
引用
BibTeX:
@inproceedings{siddiq2024regexeval, author={Siddiq, Mohammed Latif and Zhang, Jiahao and Roney, Lindsay and Santos, Joanna C. S.}, booktitle={Proceedings of the 46th International Conference on Software Engineering, NIER Track (ICSE-NIER 24)}, title={Re(gEx|DoS)Eval: Evaluating Generated Regular Expressions and their Proneness to DoS Attacks}, year={2024} }




