2013-04-26 6 views
0

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

Например, в этой строке:

Hello how are (you) doing ? 

Я хочу, чтобы получить только «вы», который находится внутри кронштейна.

Я использую следующее регулярное выражение: /\((.*?)\)/ Но это дает мне (you).

Пожалуйста, дайте мне знать, как с этим справиться.

+3

Просьба также показать свой код до сих пор. Люди не могут помочь вам, если они даже не знают, какой язык вы используете, и как выглядит ваша попытка. – Tomalak

+1

Какой язык программирования? Вам нужно получить захваченную группу, а не сам захват. –

ответ

1

В большинстве языков вы должны иметь возможность извлекать то, что ищете, что в этом случае будет первой «группой» (т. Е. Первым в скобках). Как это сильно зависит от языка, но это вообще возможно.

Если это невозможно, если вы не знаете, как (хотя, может быть, вы хотите это выяснить), или в качестве альтернативы вы можете использовать , чтобы использовать внешний вид: (что может быть меньше обычно поддерживается, хотя)

/(?<=\()(.*?)(?=\))/ 

(?<=...) является Двойник позади, он смотрит на предыдущих персонажей.
(?=...) смотрит вперед, он смотрит на следующих персонажей.

Соответствующий поиск текста и внешний вид не включены в фактическое совпадение.

+1

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

+1

@nhahtdh Отредактировано, чтобы указать на это. – Dukeling

1

Это, как я бы решить это с помощью JavaScript и Ruby:

# Ruby 
text = "Hello how are (you) doing?" 
pattern = /\(([^\(\)]+)\)/ 
puts text.match(pattern)[1] 


// JavaScript 
var text = "Hello how are (you) doing?"; 
var pattern = /\(([^\(\)]+)\)/; 
console.log(text.match(pattern)[1]); 
+0

Обратите внимание, что вы несколько меняете значение с помощью '\ w +'. – Dukeling

+0

Совершенно верно. '\ w +' будет соответствовать только символам слова. Я буду обновлять свой ответ с помощью '/ \ (([^ \ (\)] +) \) /', чтобы соответствовать чему-либо, что не является '(' или ')'. – osahyoun

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