Я бы заменил это .*
на [\w-]*
, например, если имя является идентификатором какого-либо рода.
или [^\"]*
, чтобы не захватывать двойные кавычки в конце.
Edit:
Как уже упоминалось в другом посте, вы можете рассмотреть возможность простого обхода DOM, процесса оценки на основе XPath или XQuery вместо простого регулярного выражения. Но учтите, что вам все равно понадобится регулярное выражение в процессе фильтрации, потому что вы можете найти целевые комментарии только проверяя их тело по регулярному выражению (так как я сомневаюсь, что тело является постоянным, исходя из примера).
Редактировать 2:
Может случиться так, что начальные, конечные или внутренние пробелы в теле комментария приведут к неудаче вашего регулярного выражения. Попробуйте поставить \s*
в начале и в конце, плюс \s+
перед атрибутом, похожим на атрибут.
<!--\s*<editable\s+name=(\"[^\"]*\")?>\s*-->(.*)<!--\s*</editable>\s*-->
Или при фильтрации по XML-поиску:
"\\s*<editable\\s+name=(\"[^\"]*\")?>\\s*"
"\\s*</editable>\\s*"
Редактировать 3: Исправлены побеги дважды. Спасибо Алан М .