2010-04-07 3 views
1

Я хочу вернуть совпадения из строки регулярных выражений. Регулярное выражение строки:.NET Регулярное выражение для регулярного выражения Анализ

(?<TICKER>[A-Z]+)(?<SPACE>\\s)(?<MONTH_ALPHA_ABBREV>Jan|Feb|Mar|Apr|May|Jun|Jul|Sep|Oct|Nov|Dec)(?<SPACE>\\s)(?<DAY>\\d+)(?<SPACE>\\s)(?<YEAR_LONG>[2][0][0-9][0-9])(?<SPACE>\\s)(?<STRIKE_DOLLAR>\\d+(?=[.]))[.](?<STRIKE_DECIMAL>(?<=[.])\\d+)(?<SPACE>\\s)(?<PUTCALL_LONG>Call|Put) 

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

((?<=[<])([A-Z]|[_])+(?=[>]))|(\\[.\\]) 

Но это возвращает элементы квадратных скобок в круглых скобках. Чтобы быть более конкретным эти матчи я хочу от регулярных выражений в верхней части (имейте в виду, что это должно быть гибким для любого регулярного выражения):

TICKER 
SPACE 
MONTH_ALPHA_ABBREV 
SPACE 
DAY 
SPACE 
YEAR_LONG 
SPACE 
STRIKE_DOLLAR 
[.] 
STRIKE_DECIMAL 
SPACE 
PUTCALL_LONG 
+0

@Chris: FYI, регулярные выражения не являются частью языка C# - они являются частью .NET Framework. –

+2

"meta regex"! человек, у вас есть головная боль ... –

+0

Случалось ли вам, что регулярные выражения * описывают * обычный язык? Это означает, что они не могут быть самими собой обычным языком. Поэтому регулярные выражения с регулярными выражениями невозможны. – Tomalak

ответ

2
((?<=[<])([A-Z]|[_])+(?=[>]))|(?<!\([^\)]*)\[[^\]]+\] 

Кроме того, используйте @"" обозначения, поэтому вам не придется бежать обратный слэш (как вы это делали в вашем примере кода). Этот щенок достаточно неразборчив.

0

Когда вы подходите ваше регулярное выражение вы можете настроить параметры для включения RegexOptions.ExplicitCapture который будет захватывать только именованные группы, как правило, все в скобках фиксируется. Затем вы можете назвать все ваши группы захвата в этом формате (?<captureGroupName>[insertRegExHere]). Это позволяет вам захватывать все, что вам нравится, и использовать разумные имена.

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