Regex помогите с образцом образца. C # - PullRequest
1 голос
/ 23 марта 2009

Я решил использовать Regex, теперь у меня две проблемы:)

Учитывая входную строку "hello world [2] [200] [% 8] [% 1c] [% d]",

Каким будет подходящий шаблон для соответствия экземплярам "[% 8]" "[% 1c]" + "[% d]"? (Таким образом, знак процента, сопровождаемый любой буквенно-цифровой длиной, все заключенные в квадратные скобки).

для "[2]" и [200] я уже использую

Regex.Matches(input, "(\\[)[0-9]*?\\]");

Что отлично работает.

Любая помощь будет оценена.

Ответы [ 4 ]

2 голосов
/ 23 марта 2009
MatchCollection matches = null;
try {
    Regex regexObj = new Regex(@"\[[%\w]+\]");
    matches = regexObj.Matches(input);
    if (matches.Count > 0) {
        // Access individual matches using matches.Item[]
    } else {
        // Match attempt failed
    } 
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}
1 голос
/ 24 марта 2009

Регулярное выражение, необходимое для соответствия этому шаблону «[% anyLengthAlphaNumeric]» в строке, это «[(% \ w +)]»

Символ «[» начинается с «\», затем вы создаете группу символов с (...). Эта группировка определяется как% \ w +. \ W является ярлыком для всех символов слова, включая буквы и цифры без пробелов. Знак + соответствует одному или нескольким экземплярам предыдущего символа, символа или группы. Затем завершающий "]" экранируется с помощью "\" и ловит закрывающую скобку.

Вот базовый пример кода:

string input = @"hello world [2] [200] [%8] [%1c] [%d]";
Regex example = new Regex(@"\[(%\w+)\]");
MatchCollection matches = example.Matches(input);
1 голос
/ 23 марта 2009

Попробуйте это:

Regex.Matches(input, "\\[%[0-9a-f]+\\]");

Или как комбинированное регулярное выражение:

Regex.Matches(input, "\\[(\\d+|%[0-9a-f]+)\\]");
0 голосов
/ 23 марта 2009

Как насчет @"\[%[0-9a-f]*?\]"?

string input = "hello world [2] [200] [%8] [%1c] [%d]";
MatchCollection matches = Regex.Matches(input, @"\[%[0-9a-f]*?\]");
matches.Count // = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...