【问题标题】:How to find words with all uppercase letters without space?如何找到所有大写字母没有空格的单词?
【发布时间】:2017-09-05 09:46:21
【问题描述】:

我有一个参考书目文件,其中包含如下所示的示例条目:

@article{le1993new,
  title={A new simplified acute physiology score (SAPS II) based on a European/North American multicenter study},
  author={Le Gall, Jean-Roger and Lemeshow, Stanley and Saulnier, Fabienne},
  journal={Jama},
  volume={270},
  number={24},
  pages={2957--2963},
  year={1993},
  publisher={American Medical Association}
}

我想用正则表达式查找所有带有大写字母的单词,在这种情况下是“SAPS”和“II”。以下正则表达式没有找到所需的单词:

(?=[A-Z])([A-Z\s]+)

正则表达式(对于 ST3)应该如何查找所有没有空格的大写字母?

【问题讨论】:

  • 您在使用查找功能吗?然后你需要一个 PCRE 正则表达式。尝试\b\p{Lu}+\b\b\p{Lu}{2,}\b(或在Python 中,仅使用ASCII \b[A-Z]{2,}\b)。确切的模式标准是什么? 2个或更多大写字母?或者你想得到SAPS II 作为一个单一的匹配?
  • 什么标签是相关的:SublimeText3 还是 Python?显示您的代码(或确认您只想使用 SublimeText)。
  • @WiktorStribiżew 2 个或更多大写字母。而不是单场比赛。它应该在 ST3 中工作。
  • 只是\b[A-Z]{2,}\b的问题
  • @revo 我已经建议\b[A-Z]{2,}\b。目前没有反馈。 Tom,请查看我第一条评论中的建议,如果其中任何一项按预期工作,请告知。

标签: regex sublimetext3


【解决方案1】:

请注意,(?=[A-Z])([A-Z\s]+) 首先确保当前位置的右侧有一个大写 ASCII 字母,然后匹配(使用)1 个或多个大写 ASCII 字符或空白字符。它将匹配Alice 中的A,因为A 符合前瞻限制并匹配一个字母。由于模式末尾没有单词边界,因此返回有效匹配 A。它还将匹配SAPS II(带有尾随空格),因为\s 匹配空格,而+ 将贪婪地抓取所有连续的大写字母和空格。

一个正则表达式可以找到所有包含 2 个或多个大写字符的完整单词,并且可以在 SublimeText3 中使用

\b[[:upper:]]{2,}\b

看截图:

详情

  • \b - 前导词边界
  • [[:upper:]]{2,} - 2 个或更多大写字母
  • \b - 词尾边界。

【讨论】:

  • 请注意,在 Sublime Text 3 中,[[:upper:]] POSIX 字符类也匹配 Unicode 大写字母。
  • 它可以在 Windows 上运行,但在 Linux 上不行。我想知道为什么?
  • @TomKurushingal 你是在 Wine 下运行它吗?
  • 没有。没有 Wine 的 Ubuntu 14.04 LTS 上的 ST3。
  • @TomKurushingal 我在 Ubuntu 14 上安装了 ST3,它的工作原理是一样的。您是否检查了正则表达式和区分大小写的模式?按 CTRL+R 和 CTRL+C 或只检查应用程序左下角最左边的第一个图标。 IE。 .*Aa 必须打开(如我在答案中的屏幕截图所示)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 2014-11-28
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
相关资源
最近更新 更多