Сопоставьте все возможные комбинации слов с помощью регулярных выражений - PullRequest
0 голосов
/ 16 апреля 2020

Я целый день боролся за то, чтобы получить то, что я хочу. Может быть, вы можете мне помочь.

Допустим, у меня есть строка DT JJ NN IN JJ JJ NN NNS IN, в идеале, для необходимого результата я бы написал регулярное выражение примерно так:

(<NN.*> +)|(<NN.*> +<JJ.*> *)|(<JJ.*> *<NN.*> +)

Я хочу получить результат, как и все возможные комбинации, в этом примере будет выглядеть следующим образом:

  1. NN
  2. NN
  3. NNS
  4. JJ NN
  5. JJ JJ NN
  6. JJ JJ NN NNS
  7. JJ NN
  8. JJ NN NNS
  9. NN NNS

Возможно, я ищу невозможное или должен изменить отношение. Я не знаю. Пожалуйста, поделитесь любыми идеями.

Заранее спасибо!

1 Ответ

0 голосов
/ 16 апреля 2020

Я не совсем уверен, какому выражению вы хотите соответствовать и вашим требованиям, но вы думали об использовании опционально? В вашем шаблоне? Что-то вроде:

((JJ|NN(S)?) ?)*

Подходит для всех приведенных вами примеров.

...