【发布时间】:2011-01-04 12:04:43
【问题描述】:
我目前正在尝试从一堆文档中提取缩写词。
假设文档包含“静态应用程序安全测试 (SAST)”
所以我正在尝试创建一个正则表达式来过滤掉这些字符串。 应该是这样的
“一些单词,其首字母后来在大括号中重复。”
不幸的是,我的正则表达式不是很好地表达这一点。你们认为这完全可以通过正则表达式来完成,还是我需要更强大的东西,比如基于 CFG 的解析器?
【问题讨论】:
-
什么语言?这可能是 .Net 中一个有趣的小正则表达式,但我不确定 Java 是否可以处理它。一般的答案是不可能使用正则表达式,但是非常容易通过循环单词手动完成,你真的不需要解析器。
-
即使 regex 可以做到这一点,我也不确定它是否 属于 进入 best-done-via-regex 域。见To use or not to use regular expressions?。在括号中查找多个单词后跟一个全大写的无空格字母序列很容易,但最好通过正则表达式完成。
-
哎呀,我第一次读到这篇文章时,我的大脑错误地将 anagram 注册为 acronym!我不知道正则表达式对于 acronyms 来说是那么不合适——所提供的解决方案似乎很简单——但是使用一个来生成 anagrams 就等于在一个本质上是单线程乐器,如小提琴。您必须要么疯了,要么是真正的大师,才能尝试它(即 BWV 1001–1006)。
-
如果有人感兴趣,我已经用.Net groups for every length 解决了这个问题。只是一个练习。
标签: regex