【问题标题】:Finding all possible Acronyms查找所有可能的首字母缩略词
【发布时间】:2019-06-05 23:59:58
【问题描述】:

我使用 VBA 创建了一个脚本来遍历 Word 文档以查找所有可能是首字母缩略词的单词,但我发现我的 regEx 模式没有找到所有这些单词。

我使用的正则表达式模式是“([AZ]{2,})(-([AZ]{2,})[A-Za-z0-9] )"

通过这个模式我可以找到

AA
AAA
AA-BB
AA-BBB
AAA-BB
AAA-BBB
AAA-1234
AAA-BBB-1234

但它没有找到这些词

B2B
B2B-1234
B2B-A1A-1234

单词匹配的期望应该是第一个字符是一个字母,并且必须包含至少两个大写字母和至少一个数字。此外,如果单词中有破折号,那么破折号之前的字符必须与单词匹配的预期匹配。

有没有办法使用上面的正则表达式模式也包括字母数字字母首字母缩写词?

【问题讨论】:

  • 我不认为acronym 和你想的一样。
  • 首字母缩略词并不意味着由其他单词的首字母组成并发音为单词的缩写(例如 ASCII、NASA )。如果不是这样,那么 NASA、P2W、PVP 能做什么?
  • 不清楚您所说的首字母缩略词是什么意思,因为您提供的唯一定义是您正在尝试修复的正则表达式本身 - 所以它显然不是正确的定义。 12AB 会是“首字母缩略词”吗? AA-BB-12 怎么样?你能提供更好的定义或描述吗?
  • Grismar,我明白你的意思,并且应该更清楚地了解期望构成的首字母缩略词。我已经更新了帖子,但单词匹配的期望应该是第一个字符是一个字母,并且必须包含至少两个大写字母和至少一个数字。此外,如果单词中有破折号,那么破折号之前的字符必须与单词匹配的预期匹配。所以 12AB 不是首字母缩写词,但 AB-12AB 或 AB-1233-12 会是。我希望这能解决问题。
  • @Milco,您要匹配的语言是什么?

标签: regex vba ms-word


【解决方案1】:

Milco,欢迎来到 StackOverflow。我认为以下正则表达式对您有用:

([A-Z][A-Z0-9]+)(-[A-Z0-9]{2,})*

此正则表达式可容纳数字和可选数量的连字符,并匹配上述每个案例。我在regextesteronline.com 进行了测试 - 我假设 VB.net 正则表达式与 VBA 相同,至少对于基本的正则表达式它们应该是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多