我有一个非常大的文件,包含数千个句子。在所有这些中,每个句子的第一个单词都以小写字母开头,但是我需要它们以大写字母开头。
我浏览了该站点,试图找到一个正则表达式来执行此操作,但我无法这样做。在此过程中,我学到了很多有关正则表达式的知识,这对我的工作始终是加分的,但我无法具体找到所需的内容。
我试图从几种答案中找到一种编译代码的方法,包括以下内容:
但是出于不同的原因,它们都没有达到我的目的。
我正在使用接受正则表达式的翻译专用应用程序。
您认为这完全有可能吗?这样可以节省我数小时的繁琐工作。
答案 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