RegEx находит строку, содержащую числа с одним пробелом, двумя пробелами или без пробела, за которыми следуют / и четыре числа - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно использовать RegEx, чтобы найти строку в документе Word. Строка содержит числа {1; 5} с одним пробелом, двумя пробелами или без пробелов , за которыми следуют / и четыре числа {4}, обозначающие год, в котором документ был создал.

Строки, которые мне нужно найти, выглядят так:

  • 45 /2017
  • 125 /2019
  • 1245 /2018
  • 12577 /2019
  • 37589 /2017

но иногда между ними нет пробела:

  • 45/2017
  • 125/2019
  • 1245/2018
  • 12577/2019
  • 37589/2017

и иногда есть два пробела:

  • 45 /2017
  • 125 /2019
  • 1245 /2018
  • 12577 /2019
  • 37589 /2017

но это всегда в одном и том же месте - пробел или два пробела. Это всегда после первой строки чисел, которые никогда не превышают 5 цифр - поэтому я набираю [0-9] {1; 5} в RegEx.

Но когда я пытался построить это выражение RegEx в Word Ctrl + H находит и заменяет диалоговое окно, и я проверяю его по документу Word, я не могу построить универсальное выражение, чтобы найти эти строки с пробелом и без пробела. ? не работает для меня Я прочитал здесь что? должен найти один пробел или нет пробела, но когда я проверяю его в своем документе Word, он находит строку с двумя пробелами внутри, но не строку с одним пробелом или без пробела.

Вот RegEx, которые я пробовал, которые не смогли сопоставить обе строки без пробела внутри, как 4125/2019, а также похожие строки с одним или двумя пробелами:

  1. [0-9]{1;5} ?/[0-9]{4}

  2. [0-9]{1;5}\s?/[0-9]{4}

  3. [0-9]{1;5}[ ]{0;2}/[0-9]{4} это выдает ошибку, но [0-9]{1;5}[ ]{1;2}/[0-9]{4} находит 125 /2019, но не находит 125/2019 и 12577/2019.

В Poli sh версии MS Word / Excel мы используем ; вместо , в формулах, но я попробовал все это с двоеточием или точкой с запятой взаимозаменяемо .

Я читал следующие источники: Как использовать регулярные выражения (Regex) в Microsoft Excel как внутри ячейки, так и в циклах

и

Regex - пробел или без пробела

Analyst_Cave

Тестер регулярных выражений

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Попробуйте

([0-9]{1,5})([ ]{0,4})([/])([0-9]{4})

или

([0-9]{1,5})([\s]{0,4})(/[0-9]{4})

Согласно тесту все три хороши.

enter image description here

1 голос
/ 15 февраля 2020

Вы можете использовать подстановочный знак Word Найти выражение вроде:

<[0-9 ]{1;7}/[0-9]{4}>

без необходимости задействовать библиотеку RegEx.

...