正则表达式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})
试试这个。看看演示。
我会试试这个:
(?:\w+\W+){5}((?:\w.?)+)(?:\w+\W+){5}
虽然使用正则表达式进行自然语言处理是不准确的。