Regex для сопоставления слов в определенных строках

Учитывая следующий пример из определения класса в ObjectScript:

Include %sySystem
Include (%sySystem, %soap, %Net.WebSocket)

Class HS.Local.zimpl.fhirpro.UI.FileViewer Extends (HS.Local.zimpl.fhirpro.UI.Super, %CSP.Page)

Мне нужно сопоставить отдельные слова, стоящие за словом «Включить», и шаблон не должен совпадать ни в одной другой строке. Совпадения должны исключать любые знаки препинания.

Регулярное выражение будет использоваться в Javascript.

Мои лучшие усилия привели к следующему:

(?<=^Include \(?)([%A-Za-z0-9.]+)|((?<=, )[%A-Za-z0-9.]+)

Положительный просмотр назад находит строки, начинающиеся с «Включить» и, при необходимости, открывающую скобку, соответствующие словам, которые могут содержать символ процента или точку.

Чтобы сопоставить дальнейшие слова, я добавил альтернативный OR и вторую группу захвата с дальнейшим просмотром назад. Однако это приводит к совпадению многих других строк - по сути, всего, что находится за запятой и пробелом.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поиск (?<=^Include \(?) применяется только к первой альтернативе в шаблоне регулярного выражения.

Чтобы применить его к любому «слову», которое соответствует вашему основному шаблону [%A-Za-z0-9.]+, вам нужно добавить .* внутри него:

/(?<=^Include .*)[%A-Za-z0-9.]+/gm
/(?<=^Include .*)[%a-z0-9.]+/gmi

Посмотрите демонстрацию регулярных выражений . Я удалил )? из просмотра назад, потому что .* тоже соответствует символу ).

Обратите внимание: если «слова» всегда начинаются с %, вы можете использовать %[A-Za-z0-9.]+ вместо [%A-Za-z0-9.]+.

Более подробная информация:

  • (?<=^Include .*) — положительный просмотр назад, который соответствует местоположению, которому непосредственно предшествует Include в начале строки (если вы удалите флаг m, то только начало всей строки), а затем следует пробел и любые ноль или более других символов. чем символы разрыва строки после него
  • [%A-Za-z0-9.]+ — одна или несколько букв ASCII, цифр и символов . и %.

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

Brandon 29.08.2024 09:51

Другие вопросы по теме