Учитывая следующий пример из определения класса в 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 и вторую группу захвата с дальнейшим просмотром назад. Однако это приводит к совпадению многих других строк - по сути, всего, что находится за запятой и пробелом.
Поиск (?<=^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, цифр и символов .
и %
.
Великолепно! Спасибо, это решение для меня не было очевидным, и оно отлично работает. Тот же шаблон можно использовать повторно для других строк.