正则表达式Java单词上下文

我想要实现的是我想要获得首字母缩略词的上下文。 你能用正则表达式帮助我吗?

我循环遍历文本(String)并寻找点,匹配后我试图获取特定的首字母缩略词的上下文,以便我可以在那之后做一些其他处理,但我无法得到上下文。 我需要至少5个单词,并在首字母缩略词后5个单词。

//Pattern to match each word ending with dot Pattern pattern = Pattern.compile("(\\w+)\\b([.])"); Matcher matchDot = pattern.matcher(textToCorrect); while (matchDot.find()) { System.out.println("zkratka ---"+matchDot.group()+" ---"); //5 words before and after tha match = context // Matcher matchContext = Pattern.compile("(.{25})("+matchDot.group()+")(.{25})").matcher(textToCorrect); Pattern patternContext = Pattern.compile("(?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,10}"+matchDot.group()+"(?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,10}"); Matcher matchContext = patternContext.matcher(textToCorrect); if (matchContext.find()) { System.out.println("context: "+matchContext.group()+" :"); // System.out.println("context: "+matchContext.group(1)+" :"); // System.out.println("context: "+matchContext.group(2)+" :"); } } 

例:

投入:大约84%的巴黎居民看到战斗pol。 根据为Di Dimanche杂志进行的民意调查显示,到2020年,54%的人支持在该市实施柴油禁令。

输出:
1-stgex将找到pol。
第二个正则表达式将发现“ 巴黎居民认为战斗 pol 优先54%

另一个有更多文字的例子

我需要循环这一次,每次我匹配一个首字母缩略词,以获得这个特定首字母缩略词的上下文。 之后我正在处理一些数据挖掘。 这是原始文本

neklidnánemocná,vyš。 jemožnéprovéstpouzenativně

Na mozku je patrna hyperdenzitavpočátečnímúsekua。 cerebri media vlevo,vlevo seobjevujijižsmazáníhranicmezibazálnímigangliiaokolníbílouhmotouamírnádifuzníinpointenzitavperiventrikulárníbíléhmotě。 Kromětěchtočerstvýchzměnjsoupatrnéstarépostmalatickézměnytemporálněapietookcipitálněvlevo。 Oboustrannějsoupatrnévícečetnévaskulárnímikrolézevcentrum semiovale bilat。 Nejsouznámkynitrolebníhokrvácení。 skeletkalvyorientačněnihiltr。

Závěr:ZnámkydyperakutníinfectmievpovodíACMvlevo,starépostmalatickéézměnyT,P a O vlevo,vaskulárnímikrolézevcentrum semiovale bilat。

CT AG:vyš。 po bolu kl。

PozklidněnínemocnésepodařilopinséstCTAG。 Na krkujenaznačenýinkinkinkna ACC vlevo a ACI vlevopodbazí。 Kalcifikacevkarotickýchsifonechnepůsobíhemodynamickyvýznamnéstenozy。 Intrakraniálnějepatrnýkonixýuzávěroperkulárníhoúsekua。 cerebri media vlevoproparietálnílalok。 Ostatnínáleznaintrakraniálnímtepennémřečištijevmezíchnormy。

Závěr:uzávěraperkulárníhoúsekua。 cerebri media vlevo。

当然,如果它匹配句子的结尾对我来说是好的:-)问题是找到所有的首字母缩略词,即使它们在新行之前(\ n)

 ((?:[\w!@#$%&*]+\s+){5}([\w!@#$%&*]+\.)(?:\s+[\w!@#$%&*]+){5}) 

试试这个。看看演示。

https://regex101.com/r/aQ3zJ3/9

我会试试这个:

 (?:\w+\W+){5}((?:\w.?)+)(?:\w+\W+){5} 

虽然使用正则表达式进行自然语言处理是不准确的。