匹配不按日期开头的行

问题描述 投票:1回答:1

我有一些从pdf文件中提取的文本,我正在寻找一些匹配职位的关键词,我试图使用许多正则表达式只获得不以日期(任何日期格式)开始的行但我必须得到其他行从任何其他数字或单词开始。

我希望在这里找到一个好主意。最好

我已经尝试了这两个正则表达式来找到ingenieur关键词而没有任何成功:


    ((?m)^(?![0-9])\\s*\\b"+ sTofind +"\\b)

这个也是:


    ((?m)[^(?!(0-9))][\\s{2,4}]\\b"+ sTofind +"\\b.*)

我使用的文本测试就是这个(>字符不是文本的一部分):

etudiant -: ingenieur etudes et developpement
http://www.doyoubuzz.com/profilen
experiences  
ingenieur
2018-2014      ingenieur 
331    ingenieur


29 rue de la terrasse    Ingenieur Centrale Lyon / Supélec 
93160 NOISY LE GRAND    ingenieur  
09 66 11 10 93       Expertise en instrumentation industrielle, 
06 44 25 90 09     automatisation ingenieur & marketing opérationnel 
[email protected]   Bilingue anglais  ingenieur

我希望找到突出显示的文字:

etudiant -: <i>ingenieur etudes et developpement</i>
http://www.doyoubuzz.com/profilen
<i>experiences</i>
<i>ingenieur</i>
2018-2014      ingenieur 
331    <i>ingenieur</i>


29 rue de la terrasse    <i>Ingenieur Centrale Lyon / Supélec </i>
93160 NOISY LE GRAND    <i>ingenieur</i>  
09 66 11 10 93       Expertise en instrumentation industrielle, 
06 44 25 90 09     automatisation <i>ingenieur & marketing opérationnel </i>
[email protected]   Bilingue anglais  <i>ingenieur</i>
java regex regex-negation regex-lookarounds
1个回答
2
投票

您可以使用:

(?mi)^((?![0-9]+-[0-9]+).*?)(\bingenieur\b.*)

关于模式

  • (?mi)多行和不区分大小写的标志
  • ^字符串的开头
  • (捕获组 (?!否定的先行,断言在右边是什么是不可能的 [0-9]+-[0-9]+匹配1+位数,连字符和1+位数 ).*?关闭否定前瞻并匹配任何字符,除了换行非贪婪
  • )关闭捕获组
  • (\bingenieur\b.*)捕获在字边界之间匹配ingenieur直到字符串结尾的组

您可以在代码中使用多行和不区分大小写的标志,例如:

String sTofind = "ingenieur";
String regex = "^((?!>[0-9]+-[0-9]+).*?)(\\b"+ sTofind + "\\b.*)";
String string = "...";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(string);
String result = matcher.replaceAll(subst);

Regex demo | Java demo

然后你也可以用experiences替换ingenieur,如果你也想突出它。

并替换为可以突出显示第二组的2个捕获组:

$1<i>$2</i>

© www.soinside.com 2019 - 2024. All rights reserved.