Регулярное выражение в Notepad для получения ключей ресурсов

#regex #notepad

Вопрос:

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

 ....
Line 24: <asp:Button ID="id1" runat="server" meta:resourceKey="ButtonTxt"/>
Line 35: <asp:Label ID="id2" runat="server" meta:resourceKey="Name"></asp:Label>
Line 47: <asp:Label ID="id3" runat="server" meta:resourcekey="Other_Name"></asp:Label>
....
 

Как мне написать регулярное выражение только для извлечения meta:resourceKey="ButtonTxt" meta:resourceKey="Name" , meta:resourcekey="Other_Name" и так далее. В принципе, мне нужно извлечь только meta:resourcekey="xxxx" строки.

Я пытался .*?(meta:.*?").* , но это доходит только до первого " .

Ответ №1:

Вы использовали ? классификатор, чтобы включить * квантор-перед " не-жадным (или «ленивым»). Это означает, что он будет как можно меньше соответствовать данному шаблону. Вот почему этот квантор соответствует только первому " . Остальное покрывается .* группой, которая следует за вашей группой матчей.

Если вы удалите ? * квантор-соответствует жадному (что является поведением по умолчанию). Жадный квантор будет соответствовать как можно большему количеству, что в вашем случае является вторым " .

Вы можете увидеть разницу здесь: https://regex101.com/r/IgA15K/1

И есть некоторая документация по этой концепции: https://docs.microsoft.com/en-us/dotnet/standard/base-types/quantifiers-in-regular-expressions#greedy-and-lazy-quantifiers

Комментарии:

1. Спасибо, Мануэль !! Это было именно то, чего я хотел. Позвольте мне также понять кванторные и жадные концепции.

2. Я рад, что вы нашли мой ответ полезным. 🙂 В этом случае вы можете отметить это как принятый ответ.