Regex для поиска строк GetText "<% $ GetText:" - PullRequest
1 голос
/ 05 апреля 2011

Мне нужно взять текст "Дом" или "Дом" из этого кода:

<%@ Page Title="<%$ GetText: '**Home**' %>" Language="C#" ..%>
<asp:Button Text="<%$ GetText: '**Home**' %>"/>
<asp:Button Text='<%$ GetText: "**Home**" %>'/>
<asp:Button Text="<%$GetText:'**Home**'%>"/>
<asp:Button Text='<%$GetText:"**Home**"%>'/>

Существует ли регулярное выражение для поиска этого?

Я могу выполнять поиск построчно по запросу "<% $ GetText:" или "<% $ GetText:", но, возможно, кто-то умнее :)) </p>

Thx

Ответы [ 3 ]

1 голос
/ 08 апреля 2011

Получите результаты и изучите их.Это соответствует любому случаю GetText и принимает все внутри одинарных или двойных кавычек (использование дословной строки также экономит вам много escape-символов):

try {
    Regex regexCard = new Regex(@"([Gg][Ee][Tt]{2}[Ee][Xx][Tt]):\s*(['""""]([^'""""]+)['""""])");
    Match matchResults = regexCard.Match(subjectString);
    while (matchResults.Success) {

        //if i is 0 it returns the entire match
        //if i is 1 it returns the first capture group in this case "gettext" without the quotes.
        //if i is 2 it returns the second capture group, everything after <:><0-1 whitespace> including the first <' or "> until it hits a <' or "> (also includes this)
            //if i is 3 it returns the same but without the quotes.
        //you can move parentheses around or make more to create more capture groups to get the text you want.
        if(matchResults.Groups[i].Success)
        {
            string value = matchResults.Groups[i].Value;
        }
        matchResults = matchResults.NextMatch();
    } 
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}
0 голосов
/ 05 апреля 2011

RegEx:

GetText:\s*[\'\"]([^\'\"]+)[\'\"]

Если вы используете именованный захват .NET из System.Text.RegularExpressions, регулярное выражение можно изменить следующим образом:

GetText:\s*[\'\"](?<mytext>[^\'\"]+)[\'\"]

... и вашцелевой текст находится в группе совпадений "mytext"

0 голосов
/ 05 апреля 2011

Это регулярное выражение получит Домой из каждого из примеров в группе 1.

\*\*(\w+)\*\*
...