Образец регулярного выражения для возврата текста из круглой скобки
Я ищу шаблон регулярного выражения, который вернет мне содержимое первого набора скобок в строке.
Например,
text text text text (hello) text (hello2) (hello3) text
вернет "hello"
Кто-нибудь знает, как выглядит шаблон для С#?
Ответ 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");