Инкрементная группировка через регулярное выражение

1

Я пытаюсь создать регулярное выражение в Javascript, который создает группы с инкрементным текстом, но не знаю, можно ли это сделать с помощью регулярного выражения.

У меня есть следующая строка:

ГАЛЛЫПЕР СУПЕРСТОР БАУЛХАМ ХИЛЛ НЮУ АВСТРАЛИЯ

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

Group 1: AUSTRALIA
Group 2: NSW AUSTRALIA
Group 3: HILL NSW AUSTRALIA
Group 4: BAUKHAM HILL NSW AUSTRALIA
Group 5: SUPERSTORE BAUKHAM HILL NSW AUSTRALIA

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

/(?:\s(\w+))/gi

но это создает 5 групп с отдельными словами:

Group 1: SUPERSTORE
Group 2: BAUKHAM
Group 3: HILL
Group 4: NSW
Group 5: AUSTRALIA

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

Спасибо!

  • 1
    Это не хорошая идея для регулярных выражений. Вы можете использовать что - то вроде этого , но оно ограничено указанным числом групп.
  • 0
    Спасибо, Виктор, за ответ, проблема в том, что я не знаю заранее, сколько слов будет в строке, поэтому мне нужно что-то другое.
Показать ещё 4 комментария
Теги:

1 ответ

1

Как сказал Wiktor, вместо того, чтобы делать это с помощью регулярного выражения, вы можете написать для него некоторый код. Вот код javascript для этого. Попробуйте сыграть с ним,

<html>

<head>
  <script>
    function abc(s) {
      var tokens = s.split(" ");
      var ss = "";
      for (var i = 1; i < tokens.length; i++) {
        for (var j = tokens.length - i; j < tokens.length; j++) {
          ss += tokens[j];
          if (j + 1 < tokens.length) {
            ss += " ";
          }
        }
        ss += "<br/>";
      }
      document.getElementById("demo").innerHTML = ss;
    }
  </script>

  <body>

    <input type="text" id='intxt' value='GALLUPER SUPERSTORE BAULKHAM HILL NSW AUSTRALIA' size="100" />
    <button type="button" onclick="abc(document.getElementById('intxt').value)">Click here to see demo</button>
    <p id="demo"></p>
  </body>

</html>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню