1

Тема: JScript регулярное выражение!

Доброго времени суток уважаемые коллеги!
Возникла маленькая проблема и как ее решить пока не знаю, за тем и обращаюсь к вам.

Необходимо из любого выражения получить только то что находится в скобках.

Пример: Доброго времени суток (уважаемые коллеги!) результатом должно быть выражение, которое находится внутри скобок.

у меня есть пример на C# а вот как эго адаптировать под JS


string txt = "сегодня(вторник)";
Console.WriteLine("ДО:");
Console.WriteLine(txt);
string re1 = ".*?";
string re2 = "(\\(.*\\))";

Regex r = new Regex(re1 + re2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = r.Match(txt);
if (m.Success)
{
String res1 = m.Groups[1].ToString();
String result = res1.ToString().Replace("(", "").Replace(")", "");
Console.WriteLine("После:");
Console.WriteLine(result);

регулярки в C# и JS немного разнятся друг с другом, поэтому и не могу понять как применить к своей проблеме.

2

Re: JScript регулярное выражение!


src = "Доброго времени суток (уважаемые коллеги!) результатом должно быть выражение, которое находится внутри скобок.";

regexp = /\((.+)\)/;
dest = src.match(regexp)[1];

WSH.echo(dest);

3

Re: JScript регулярное выражение!

Я бы вот так предложил сделать:



//src = "Доброго времени суток (уважаемые коллеги!) результатом должно быть выражение, которое находится внутри скобок.";

//src = "Доброго времени суток уважаемые коллеги! результатом должно быть выражение, которое находится внутри скобок.";

src = "Доброго времени суток ((уважаемые коллеги!)) результатом должно быть выражение, которое (находится внутри скобок).";

regexp = /\(([^()]*)\)/;
dest = src.match(regexp);
if( dest){
  WSH.echo(dest[1]);
}else{
  WSH.echo( 'Скобок нет');
}

4

Re: JScript регулярное выражение!

Необходимо из любого выражения получить только то что находится в скобках.

Эта задача, как и ее аналог - поиск всех парных скобок, нетривиальна, так как требует рекурсию. Данный диалект регулярных выражений не поддерживает синтаксис рекурсивного поиска.

Предыдущий примеры коллег - лишь частные решения.


var s = "Доброго времени суток ((уважаемые коллеги!)) результатом должно быть выражение, которое (находится внутри скобок).";
//var s = "Доброго времени суток (уважаемые (коллеги!)) результатом должно быть выражение, которое (находится (внутри) скобок).";

var re = /\(([^()]*)\)/g;

var r;
while ( r = re.exec(re) ) {
    WScript.Echo(r[1]);
}

на самом деле этот пример должен был бы вернуть следующие строки:

(уважаемые коллеги!)
уважаемые коллеги!
находится внутри скобок

Чтобы убедиться, проверьте этот же пример, раскомментировав следующую строку.

( 2 * b ) || ! ( 2 * b )

5

Re: JScript регулярное выражение!

вопросик не забывайте

Я конечно далек от мысли... (с)