Подтвердить что ты не робот

Образец регулярного выражения для возврата текста из круглой скобки

Я ищу шаблон регулярного выражения, который вернет мне содержимое первого набора скобок в строке.

Например,

text text text text (hello) text (hello2) (hello3) text

вернет "hello"

Кто-нибудь знает, как выглядит шаблон для С#?

4b9b3361

Ответ 1

Образец regexp будет выглядеть примерно так:

\(([^)]*)\)

Вскрытие вскрытия:

\( - буква "("

( - начало подшаблона:

[^)]* соответствует 0 или более символам, которые не являются ")" - обратите внимание: мы определяем группу символов, поэтому нам не нужно скрывать символ ).

) - конец подшаблона

\) - буква ")"

Полный шаблон будет соответствовать скобкам и тексту внутри них, первый подшаблон будет соответствовать только тексту внутри скобок (см. ссылку на С#, как их получить - я не говорю С#;))

Ответ 2

Это вернет вам только то, что находится в первом наборе скобок:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Match match = Regex.Match("foo bar (first) foo bar (second) foo", @"\((.*?)\)");

            if (match.Groups.Count > 1)
            {
                string value = match.Groups[1].Value;
                System.Console.WriteLine(value);
            }
        }
    }
}

Ответ 3

Bare regex:

\((.*?)\)

В Python вы можете использовать его следующим образом:

import re

rx = re.compile(r'\((.*?)\)')
s = 'text text text text (hello) text (hello2) (hello3) text'
rxx = rx.search(s)
if rxx:
    print(rxx.group(1))

Ответ 4

Если строки относительно невелики, вместо замены можно использовать замену:

string s = Regex.Replace("text text text text (hello) text (hello2) (hello3) text", @"^.*?\(([^)]*)\).*$", "$1");