正则表达式将行中的第一个小写字符替换为大写

时间:2019-04-17 06:00:30

标签: regex text replace editor

我有一个非常大的文件,包含数千个句子。在所有这些中,每个句子的第一个单词都以小写字母开头,但是我需要它们以大写字母开头。

我浏览了该站点,试图找到一个正则表达式来执行此操作,但我无法这样做。在此过程中,我学到了很多有关正则表达式的知识,这对我的工作始终是加分的,但我无法具体找到所需的内容。

我试图从几种答案中找到一种编译代码的方法,包括以下内容:

但是出于不同的原因,它们都没有达到我的目的。

我正在使用接受正则表达式的翻译专用应用程序。

您认为这完全有可能吗?这样可以节省我数小时的繁琐工作。

2 个答案:

答案 0 :(得分:1)

接受Ildar的回答并结合他的两种模式应该毫不妥协。 (?<=[\.!?]\s)([a-z])|^([a-z]) 这基本上是说,如果是第一模式还是第二模式。但是,由于您现在从技术上提取2组而不是1组,因此必须将2组称为$2。这应该没问题,因为只有一种模式可以匹配。 因此,您的替换模式如下: \U$1$2

这是一个有效的示例,再次基于Ildar的答案... https://regex101.com/r/hqwK26/13

答案 1 :(得分:0)

您可以使用此正则表达式搜索句子的前几个字母:

(?<=[\.!?]\s)([a-z])

它与前一个句子(可能以以下各项之一结尾:[a-z])后面的小写字母[\.!?]和一个空格字符\s匹配。

然后用\U$1替换。

它不仅适用于第一句话。我故意使正则表达式保持简单,因为手动将首字母大写很容易。

工作示例https://regex101.com/r/hqwK26/1

UPD :如果您的软件不支持\U,则可能要将文本复制到Notepad ++并在其中进行替换。完全支持\U,只需选中即可。

UPD2:根据评论,任务略有不同,仅应将每行的首字母大写。

有一个简单的正则表达式:^([a-z]),具有相同的替换模式。

这是一个有效的示例https://regex101.com/r/hqwK26/2