我想从正则表达式字符串返回匹配项。正则表达式字符串是:
(?<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 :(得分:2)
((?<=[<])([A-Z]|[_])+(?=[>]))|(?<!\([^\)]*)\[[^\]]+\]
此外,使用@""
表示法,这样您就不必转义反斜杠(就像您在示例代码中所做的那样)。这只小狗足够难以辨认。
答案 1 :(得分:0)
当你匹配你的正则表达式时,你可以设置选项包括RegexOptions.ExplicitCapture
,它只捕获命名组,通常捕获括号内的所有内容。然后,您可以使用此格式(?<captureGroupName>[insertRegExHere])
命名所有捕获组。这使您可以捕获任何您喜欢的内容并使用合理的名称。