Использование регулярного выражения для извлечения полных слов из текста - PullRequest
0 голосов
/ 18 ноября 2009

Я работал с данными анализа, я получил строку вроде:

"Scottish Premier League (click here to open|close this coupon)"

Я хотел бы извлечь "Шотландскую Премьер-лигу" с Scottish Соответствующей группой 1 и Premier League Соответствующей группой 2, используя регулярное выражение.

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

MatchCollection matchCol = reg.Matches("Scottish Premier League (click here to open|close this coupon)");

Ответы [ 4 ]

2 голосов
/ 18 ноября 2009

Если вы просто хотите сопоставить каждое конкретное слово, тогда ваше регулярное выражение может выглядеть примерно так:

(Scottish) (Premier League)

Если вы хотите сопоставить первое слово, то следующие два:

([\w]+) ([\w]+ [\w]+)

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

(\w+)\s+(\w+\s+\w+)
1 голос
/ 18 ноября 2009

Основной и прямой:

$s =  "Scottish Premier League (click ... coupon)";
$s =~ m/(Scottish) (Premier League)/;
print "Match groups one and two: '$1' '$2'\n";

Вы, вероятно, хотели более обобщенное соответствие:

$s =  "Generalized Matching on a string (click ... coupon)";
$s =~ m/^(\S+)\s(.+)\s+\(click/;
print "Match groups one and two: '$1' '$2'\n";

Это Perl; будьте более конкретны в следующий раз.

Также, помогите себе, используйте инструмент, такой как RegexBuddy или Expresso .

1 голос
/ 18 ноября 2009

/ (шотландский) (Премьер-лига) /

0 голосов
/ 18 ноября 2009

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

/^(\w*) (.*) \(/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...