Как добавить \ n в начале появления числа в строке с помощью регулярных выражений - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть объект, который содержит огромный текст, как в примере ниже.

var obj ={ "text" : "1This is the sample text. 2that I want to split. 3And add \n in the beginning of a number, 4whenever there is a number occurrence; in this string 4:1 for example i can have somewhere 5-6 also. How to achieve it 7Using javascript and 8regex"

Мне нужно добавить \n или <br> передвхождение числа.

Я пытался с /([0-9])\w+/g и присоединиться с \n следующим образом:

Пожалуйста, запустите фрагмент кода, чтобы увидеть мой результат

var obj ={ "text" : "1This is the sample text. 2that I want to split. 3And add \n in the beginning of a number, 4whenever there is a number occurrence; in this string 4:1 for example i can have somewhere 5-6 also. How to achieve it 7Using javascript and 8regex"}

if(obj.text) {
    let quote = obj.text;
    var regex = /([0-9])\w+/g;
    var result = quote.split(regex).join('\n');
    console.log('result', result);
} 

Мой ожидаемый вывод:

1 Это пример текста.

2, который я хочу разбить.

3 И добавьте \ n в начале числа,

4, когда встречается число;например, в этой строке

4: 1 я могу иметь где-то

5-6.Как этого добиться

7 Используя javascript и

8regex

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

Спасибо заранее.Лучший ответ будет оценен.

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

Вы можете использовать предварительный просмотр, чтобы вставить новую строку перед цифрой, за которой следуют либо символы слова, либо дефис или двоеточие, используя это регулярное выражение,

quote.replace(/(?=\d+(?:[:-]|\w+))/g,'\n')

var obj ={ "text" : "1This is the sample text. 2that I want to split. 3And add \n in the beginning of a number, 4whenever there is a number occurrence; in this string 4:1 for example i can have somewhere 5-6 also. How to achieve it 7Using javascript and 8regex"}

if(obj.text) {
    let quote = obj.text;
    var result = quote.replace(/(?=\d+(?:[:-]|\w+))/g,'\n');
    console.log('Result: ', result);
} 
0 голосов
/ 26 февраля 2019

Вы можете использовать это регулярное выражение:

/(\d(?:[-:]\d)?)/g

и заменить его на

\n$1

Код:

var regex = /(\d(?:[-:]\d)?)/g;
var str = '1This is the sample text. 2that I want to split. 3And add \\n in the beginning of a number, 4whenever there is a number occurrence; in this string 4:1 for example i can have somewhere 5-6 also. How to achieve it 7Using javascript and 8regex';
var subst = '\n$1';

var result = str.replace(regex, subst);

console.log('result: ', result);

Регулярное выражение будет также соответствовать всем числам и некоторым не числам, потому что, очевидно, вы хотите иметь разрыв строки до 4:5 и 5-6.Регулярное выражение сопоставит их и поместит то, что соответствовало, в группу 1. Затем совпадения будут заменены новой строкой, за которой следует то, что находится в группе 1.

0 голосов
/ 26 февраля 2019

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

/\s([0-9])/g

К replace все числа, которые имеют пробел \s перед ним с \n$1:

$1 относится к группе захвата ([0-9])

var obj = {
  "text": "1This is the sample text. 2that I want to split. 3And add \n in the beginning of a number, 4whenever there is a number occurrence; in this string 4:1 for example i can have somewhere 5-6 also. How to achieve it 7Using javascript and 8regex"
}

if (obj.text) {
  let quote = obj.text;
  const result = quote.replace("\n", "\\n")
                      .replace(/\s([0-9])/g, '\n$1');
  console.log(result);
}
0 голосов
/ 26 февраля 2019

Вы можете использовать String.prototype.replace и заменить любые случаи, когда есть хотя бы одна цифра \d+ на \n + номер, который был только что заменен.Если вы хотите получить только цифры, которые начинаются со слов или пробелов, вы можете использовать положительный взгляд (?:^|\s|\w)

var text = "1This is the sample text. 2that I want to split. 3And add \\n in the beginning of a number, 4whenever there is a number occurrence; in this string 4:1 for example i can have somewhere 5-6 also. How to achieve it 7Using javascript and 8regex";

var result = text.replace(/(?:^|\w|\s)(\d+)/g, "\n$1");
console.log(`result: ${result}`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...