匹配不是以日期开始的行

Matches lines not starting by Date

我有一些从 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.email@wanadoo.fr   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.email@wanadoo.fr   Bilingue anglais  <i>ingenieur</i>

您可能会使用:

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

关于图案

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

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

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 个捕获组:

<i></i>