Как извлечь предложения в регулярном выражении, разделенные словом, за которым следует точка с запятой? - PullRequest
0 голосов
/ 22 декабря 2018

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

Я посмотрел в позитивную и негативную перспективу врегулярное выражение, но я все еще не смог решить мою проблему.Я могу выбрать все до второго раздела, но только если в этом случае я выбирал место.Если бы я выбирал функции, я бы также выбрал предыдущий раздел, местоположение.См. Текст ниже в качестве примера.

Вот текст, из которого я хочу извлечь:

Расположение: Деревня 1 \ r \ n \ r \ nОсобенности: множествопредложения, в том числе закуски, горячие блюда, пицца на дровах, салат-бар, гриль, индивидуальные сэндвичи и обертки на заказ, предметы первой необходимости и многое другое \ n \ n \ r \ nОплата принимается: наличными, Watcard \ r \n \ r \ nЭто отличное место для встречи с друзьями!Аромат свежеиспеченного хлеба и выпечки от нашей собственной пекарни UW, несомненно, заставит вас глубоко вздохнуть.Mudie's предлагает большой выбор вегетарианских блюд, бесплатные закуски, салат-бар, гриль, сэндвичи и пита на заказ, полный завтрак и полуфабрикаты.Горячие блюда и гарниры доступны каждый час обеда и ужина. Часы работы маминого прилавка *: \ r \ n \ r \ nЗавтрак: 7:30 - 11:00 утра \ r \ n\ r \ nОбед: с 11:30 до 14:00. \ r \ n \ r \ nУжин: с 4:30 до 8:00. \ r \ n \ r \ n * Обратите внимание, что эти часы могут быть изменены безуведомление "

Я написал это до сих пор:

  /.+?(?=Payment accepted)/

, который выбирает все до раздела" Платеж принят ". Я также написал

/(Location|Features|Payment accepted):\s{1,4}?[A-Z]+\s?\d?/

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

Так что вВ приведенном выше случае мои извлеченные части будут:

Location: Village 1
Features:  A multitude of offerings, including entrees, hot meals, wood-fired pizza, salad bar, grill items, made-to-order deli sandwiches & wraps, convenience items and much more
Payment accepted: cash, Watcard

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

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

/Location:\s*([^\v]*)\s*Features:\s*([^\v]*)Payment accepted:(.*?)(?=\r\n)/

Вот код JS для того же.

    var myString = "Location: Village 1 \r\n\r\nFeatures:  A multitude of offerings, including entrees, hot meals, wood-fired pizza, salad bar, grill items, made-to-order deli sandwiches & wraps, convenience items and much more\r\n\r\nPayment accepted: cash, Watcard  \r\n\r\nThis is a great place to meet your friends! The aroma of fresh baked breads and pastries from our in-house UW Bakery will surely make you take a deep breath. Mudie’s offers a large selection of vegetarian foods, grab n’ go items, salad bar, grill items, made-to-order deli sandwiches and pitas, full breakfast, and convenience foods. A hot entrée item and side dishes are available every lunch and dinner hour.\r\n\r\nMeal hours for Mom's Counter*:\r\n\r\nBreakfast: 7:30 - 11:00 am\r\n\r\nLunch:11:30 am - 2:00 pm\r\n\r\nDinner: 4:30 - 8:00 pm \r\n\r\n*please note, these hours are subject to change without notice "; // I want "abc"

    var arr = /Location:\s*([^\v]*)\s*Features:\s*([^\v]*)Payment accepted:([^\r\n]*)/.exec(myString);

    console.log("Location --> "+arr[1]);
    console.log("Features --> "+arr[2]);
    console.log("Payment accepted --> "+arr[3]);
0 голосов
/ 22 декабря 2018

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

Что-токак то, что вы искали?

Location:\s?([\w\d ]+)\s{1,5}Features:\s+(.+)\s{1,5}Payment accepted:\s?(.+)

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