#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. Я рад, что вы нашли мой ответ полезным. 🙂 В этом случае вы можете отметить это как принятый ответ.