Разделение Javascript с помощью RegEx - PullRequest
1 голос
/ 15 июня 2010

Я только что задал вопрос о Regex и получил отличный ответ: Разделение JavaScript без потери символа

Теперь у меня есть еще один вопрос.

Мой текущий Regex выглядит так:

var split = text.split(/(?=\w*\d*\d:\d\d)/);

По сути, я пытаюсь разделить метки времени (например, 9:30 или 10:30, разница между ними - дополнительная цифра в последней). Как мне это сделать?

В настоящее время, если у меня есть эти два:

9:30 pm
The user did action A.

10:30 pm
Welcome, user John Doe.

Разделены:

9:30 pm
The user did action A.
----
1
----
0:30 pm
Welcome, user John Doe.

Как добавить дополнительную проверку для первого символа в отметке времени?

Спасибо!

Ответы [ 3 ]

1 голос
/ 15 июня 2010

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

\d{1,2}:\d{1,2} (am|pm)

Проблема с вашим регулярным выражением иРегулярное выражение Энди в том, что * жадный.Это означает ноль или более совпадений, столько раз, сколько возможно. Использование {min, max} с точными нужными числами будет более точным и позволит избежать жадного *.

edit: Andy'sдействительно работает на этом сайте, на который он ссылается.И * не кажется жадным.Работает ли какой-либо шаблон для вас?

1 голос
/ 15 июня 2010

См. мой ответ на ваш другой вопрос. Я исправил эту проблему в регулярном выражении, добавив границу слова:

var split = journals.split(/\s*(?=\b\d+:)/);

Обновлено с помощью \s*, чтобы убрать лишние пробелы (но не разрывы строк). Результат:

["9:30 pm    
The user did action A.", "10:30 pm  
Welcome, user John Doe.", "11:30 am
Messaged user John Doe"]
1 голос
/ 15 июня 2010
var split = text.split(/(?=\w*[\d]{1,2}:[\d]{2})/);

RegexPal полезен для этих задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...