2010-01-22 4 views
0

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

Строка поиска может быть как:

ANY_STRING(string1)this is 
searching string1 
ANY_STRING(string2)this is 
searching string2 

Струны матч должен быть:

(string1)this is searching string1 
(string2)this is searching string2 

Любая идея?

Спасибо.

+0

Какой язык вы используете для разработки? –

+0

Как «любой» ANY_STRING? Будут ли все шапки и подчеркивания? Может ли он содержать круглые скобки? Пространства? Будут ли строки в паранах содержать пробелы или знаки препинания? Сердцем успеха регулярного выражения является знание ваших данных, чего у нас нет, и вы могли бы. Предоставьте более подробную информацию об этом аспекте, и вы получите лучшие результаты от ответчиков. – Jay

+0

Это очень неопределенный вопрос. Правильный ответ для этого единственного приведенного вами примера: '(? <= \)). * \ R? \ N. *' –

ответ

1

Замените все новые строки пробелом, затем разделите строку на разделитель ANY_STRING.

+0

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

+0

@ zyq524: Пожалуйста, отредактируйте свой вопрос, чтобы показать, какая группа вам нужна. – kennytm

1

предполагая ваши строки для поиска всегда между кронштейнами и предполагается, что вы на * NIX

$ awk '{match($0,/\(/);printf "%s ", substr($0,RSTART)} !/\(/{print ""}' file 
(string1)this is searching string1 
(string2)this is searching string2 

В противном случае, вы должны предоставить более конкретные данные.

0

Посмотрите на интерактивных оценщиков для регулярных выражений, например. один для fileformat.info (для синтаксиса Java) или rubular.com (синтаксис Ruby). Это может помочь вам определить нужное выражение.

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