Соответствует строкам, не начинающимся с даты - PullRequest
1 голос
/ 05 апреля 2019

У меня есть какой-то извлеченный текст из 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>

1 Ответ

2 голосов
/ 05 апреля 2019

Вы можете использовать:

(?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 демо

Тогда вы также можете заменить ingenieur на experiences, если вы также хотите выделить это.

И замените двумя группами захвата, где вы можете выделить вторую группу:

$1<i>$2</i>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...