Java正则表达式,信号词和停止词列表的筛选文档

Java正则表达式,信号词和停止词列表的筛选文档,java,regex,keyword,prefix,Java,Regex,Keyword,Prefix,我想筛选文档中的特定关键字,例如: ausschreibungs id|ausschreibungs-id|ausschreibungsid|ausschreibungsnummer|chiffre nummer|chiffre-nummer|chiffrenr.|chiffre nr.|chiffre-nr.|chiffrenummer|chiffre code|chiffre-code|chiffrecode|chiffre|job-id|job-nr.|job-nr|job id|job

我想筛选文档中的特定关键字,例如:

ausschreibungs id|ausschreibungs-id|ausschreibungsid|ausschreibungsnummer|chiffre nummer|chiffre-nummer|chiffrenr.|chiffre nr.|chiffre-nr.|chiffrenummer|chiffre code|chiffre-code|chiffrecode|chiffre|job-id|job-nr.|job-nr|job id|job nr.|jobnummer|jobnr.|jobid|jobcode|job nr.|ziffer|kennziffer|kennz.|referenz code|referenz-code|referenzcode|ref. nr.|ref. id|ref id|ref.id|ref.-nr.|ref.- nr.|referenz nummer|referenznummer|referenz nr.|referenz-nr.|referenznr.|referenz|referenznummer der stelle|id#|id #|stellenausschreibung nr.|stellenausschreibung nr|stellenausschreibungs nr.|stellenausschreibungs-nr.|stellenausschreibungsnr.|stellenangebots id|stellenangebots-id|stellenangebotsid|stellen id|stellen-id|stellenid|stellenreferenz|stellen-referenz|ref.|st.nr.|stellennumer|st.-nr.|st. nr.|kenn-nr.|positionsnummer|kennwort|stellenkey|stellencode|job-referenzcode|bewerbungskennziffer|projekt id|projekt-id|reference number|reference no.|reference code|job code|job id|job vacancy no.|job-ad-number|auto req id|job ref|kennziffer|
通常,在这些关键字之后,会出现一个带有小数、特殊字符或字母字符的奇怪字符串,如“AE_0394-33”或类似的字符,它可能是任何正常的单词等。。。但通常,十进制数字在该字符串中经常出现(或至少出现一次)

我想根据可能的信号关键字列表之后的所有内容过滤文档(后面是一个空格,然后是一个奇怪的字符串,后面是另一个空格)。我要筛选的匹配字符串通常是一个完整的字符串,中间没有空格

我还有一个Stopwords列表,我的想法是删除所有单词或那些Stopwords后面的句子,以减少可能匹配的候选数量,直到出现一个“.”(完成句子)

这些停止语列表可以是:

der|des|das|die|dem|den|ein|eine|diese|diese|dieser|es|sie|wir|unser|ihr|dein|nr|und|hier|oder|wie|an|angeben|mitteilen|id|nicht|einsatzort|bereit|vorzugsweise|ausschließlich|nummer|hiermit|für|auf|was|code|nr.|#||bzw.|via|von|zu|Anzahl|zum|zur|bis|ab|gerne||job|+49|tel|telefon|fax|plz|hausnr.|hausnummer|email|e-mail|veröffentlichung|veroeffentlichung|
我只是在制定正则表达式时遇到了一个问题,需要考虑关键字后面的单词,或者在其他方面,过滤掉停止词后面的单词或句子

我在考虑一个前缀词或关键字的列表,然后我要么在关键字后面取一个单词边界,要么取一整串单词,直到小数点出现

我在这里尝试一个正则表达式:

对于关键字,但我不知道如何将这些单词标记为交替单个单词的前缀列表,后跟另一个单词

例如:
[关键字列表]*空白*\s+(.*)\s+
关于您的更新。你可以用

(?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\.)\s*(\S+)

详细信息

  • (?:StellenReference:| ReferenceNummer:| Stellenausschreibung Nr\)
    -与您定义的任何停止词匹配的非捕获组
  • \s*
    -0+空格
  • (\S+)
    -组1:一个或多个非空白字符
:

输出:

INDUSTRY
21533448-JOtest
PD-666/19

如果您需要在关键字列表后获取非空白字符文本块,请捕获它:
(?:您的| stopwords | here)\s+(\s+)
。您的编辑非常不清楚:即使是一整句话,直到“.”都是什么意思?如果您需要了解第一个
,请使用
(?:your | stopwords | here)\s+([^.]+)
@WiktorStribiżew,我会使用look behind和word boundary
(?@SharonBenAsher不需要使用lookbehinds,因为不需要重叠匹配,在Java代码中,您仍然需要从
组()获取字符串值)
。此外,
\b
是一个零宽度断言,
(?感谢您的工作,并且在一些关键字之后排除了文本,我该如何做?使用(?)单词列表)(\S+)和替换所有(组(0),“”)替换
\\S*(\\S+)
替换为
\\S*+(?!(?:您的例外情况在这里)(?!\\S+)(\\S+)“谢谢”,但是不知怎么的,它并没有那么好地工作……考虑这句话:“柏林KenZiffer-19-34-8 abab斯特拉E 2-1223 45”我想抓住所有关键字后“KnnZiffER”,但我想打破或替换当关键字“斯特拉”E是类似的,但它应该忽略包含“斯特拉”的整个单词。或任何其他stopwords@user2774480贪婪的量词将获取您所期望的
\s*
将获取的所有内容。将
(.*)(\s*)(?=\w*
替换为
(.*)(?=\b\w*
),然后在使用前修剪结果。
Stellenausschreibung Nr. PD-666/19
Parkwe 103 33 /  sss968 Kasn 
            "FFFF\r\n" 
            "E-Mail: Test.Ticfffsssis-Jsdf741@drbsdfil.deeddilProtedddctor.adasdilto(\"ep_5b0224b6\", 1); 
            "Tel: (33 21) 23 42 117-3 \r\n" + 

            "Jetzt bewerben
            "  2018-12-04 nicht-medsdfs asfal";
(?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\.)\s*(\S+)
String s = "Referenznummer: INDUSTRY Kontakt: ZAsdfsdfS Herr Andrafgdh Neue Str. 7 21244 Buchholz +42341 22322 mdjob.bu44lz@zaqusssis.de Stellenanzeige teilen: Jetzt online bewerben! oder bewerben Sie sich mit\n" +
                "Geben Sie bei Ihrer Bewerbung die Stellenreferenz und die Stellenbezeichnung an! \n" +
                "Stellenreferenz:   21533448-JOtest\n\n" +
                "Stellenausschreibung Nr. PD-666/19";
Pattern pattern = Pattern.compile("(?:Stellenreferenz:|Referenznummer:|Stellenausschreibung Nr\\.)\\s*(\\S+)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
    System.out.println(matcher.group(1)); 
} 
INDUSTRY
21533448-JOtest
PD-666/19