Я пытаюсь создать регулярное выражение в 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
Я, очевидно, могу использовать циклы, чтобы делать то, что я хотел бы достичь, но мне интересно, может ли одно регулярное выражение создать тот же вывод.
Спасибо!
Как сказал 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>