正则表达式在单词中找到大写字符

时间:2018-08-24 19:17:45

标签: regex regex-lookarounds

我正在使用文本文件上的正则表达式进行文本格式化。 我发现

\b\w*[А-Ш]{2,}\w* 

将查找所有大写的单词并执行。 但是,如何找到单词中带有大写字母的单词,而新句子却找不到呢?

下面的示例文本:

ТИКВЕШ – акумулациона ХЦ (дел од повеЌенаменскиот хидросистем) во долниот тек на Црна Река, недалеку од Кавадарци. Првите два агрегата се во погон од 1968, а третиот и четвртиот од 1981 г. ТурбИните се од типот францис. Вкупната инсталирана моЌност изнесува 116 МЊ. Во периодот 1992-2003 г. просечното годиШно проиЗводство изнесувало 135,1 ГЊх, а најголемото 289,9 ЛИТ: 50 години македонско електрОстопанство, Скопје, 1995; Ј.П. „Електростопанство на Македонија#, Скопје, 1999; Електростопанство на Македонија, годиШен извеШтај, 2003; Др. Р. „ТИКВЕШ# (Кавадарци, 30. И ‡ 31. ВИИ 1942) ‡ весник на

1 个答案:

答案 0 :(得分:1)

这应该为您工作

(?<!\. |^|\pL)\pL*[А-Я]+\pL*

Demo

(?<!\. |^|\pL)是令人反感的。仅当您的字符串前面没有.和空格,或者它是该行的开头时,它才匹配。我还为\pL添加了一个案例,因为出于某种原因,\b似乎不适用于其他语言。

\pL*匹配0种或更多来自任何语言的字符

[А-Я]+匹配一个或多个大写西里尔字母

\pL*,然后我们当然会再次匹配0种或更多来自任何语言的字符

P.S。我对西里尔字母不太熟悉,所以请让我知道某些情况是否正确。