2013-05-02 4 views
0

Я хотел бы создать шаблон регулярного выражения, я хотел бы сделать шаблон, который получает значение, которое находится внутри скобок, я пробовал этот, но не работал.Я хотел бы сделать шаблон с использованием regex

String input = "(3+4)+5*4"; 
Match m = Regex.Match(input, @"([(0-9\/\+\-\*0-9)])"); 
if (m.Success) 
{ 
    String value = m.Groups[1].ToString(); 
    MessageBox.Show(value); 
} 
+10

Вместо того, чтобы просто сказать «это не работает», опишите ваши ожидаемые и фактические результаты. –

+0

ОК Я обязательно сделаю это в следующий раз, спасибо за ваш совет :). –

ответ

2

Что вы делаете неправильно понимаете, что делает «класс» в регулярном выражении.

[] - Denotes a set of characters to match. This is NOT a pattern. 

Что нужно, чтобы захватить, является образцом, который у вас был почти правильным.

(\([0-9][\/\+\-\*][0-9]\)) 

Capture: 
    Open Parenthesis 
    Any character in [0-9] 
    Any Character in [\/\+\*\-] 
    Any Character in [0-9] 
    Close Parenthesis 

Это позволит сделать только одну цифру. Если у вас есть многозначное число, даже 10 ... это не сработает. Теперь, если вы изменили его на что-то вроде этого:

(\([0-9]+[\/\+\-\*][0-9]+\)) 

те + сказать регулярное выражение, чтобы захватить один или больше. Это позволит использовать любое число, а не только одну цифру.

+0

Он работает, большое вам спасибо за вашу помощь и поблагодарить вас за то, что вы меня поняли, что я плохо это понимаю. –

1

Это может быть шаблон, который вы ищете:

"\(([0-9]+.?[0-9])\)S*" 

Вы, возможно, забыли, что скобки, круглые скобки и «+» являются специальными символами. Попробуйте Regex Planet или другие тестеры regex, чтобы изменить шаблон, который вы ищете.

1

Чтобы помочь вам узнать некоторые из этих сайтов. Очень полезный сайт: regexlib; у них есть большая библиотека регулярных выражений. У них также есть RegEx tester. Также доступен очень полезный инструмент RegEx here.

Смежные вопросы