簡體   English   中英

正則表達式解析字符串

[英]Regular Expression to parse string

我有這樣的潛在strings 前幾個characters是一個符號,可以是一個到幾個字母,但可能包含奇怪的字符,如“/”。 然后接下來的六個characters始終是date , YYMMDD 其中 YY,MM,DD 始終是integers ,但始終用0填充到左側,如圖所示。 后面是一個始終為 'C' 或 'P' 的單個字符,最后是一個double

AAPL220819C152.5
AAPL220819P195
AAPL220902P187.5
AAPL220819C155
AAPL220930C180

將這些字符串parses為其組成部分的regular expression是什么,

Symbol,
Date,
COP,
Strike

所以預期的 output 將是:

"AAPL220819C152.5" {Symbol = "AAPL", Date = 2022-08-19, COP = "C", Strike = 152.5 }
"AAPL220819P195"   {Symbol = "AAPL", Date = 2022-08-19, COP = "P", Strike = 195.0}

我在這里看到過類似的帖子,但我對修改它的理解還不夠。

嘗試這個:


        static void Main(string[] args)
        {
            TestParsingRegex("AAPL220819C152.5", "AAPL220819P195", "AAPL220902P187.5", "AAPL220819C155", "AAPL220930C180");
        }

        private static void TestParsingRegex(params string[] strings)
        {
            var regex = new Regex(@"([A-Z]+)(\d{6})([CP]{1})(.*)");
            foreach (var s in strings)
            {
                var match = regex.Match(s);
                foreach (var g in match.Groups)
                {
                    Console.WriteLine(g);
                }
            }
        }

它應該有以下 output:

AAPL220819C152.5
AAPL
220819
C
152.5
AAPL220819P195
AAPL
220819
P
195
AAPL220902P187.5
AAPL
220902
P
187.5
AAPL220819C155
AAPL
220819
C
155
AAPL220930C180
AAPL
220930
C
180

請注意,第一組是整個字符串

此正則表達式使用組來獲得所需的解析,如下所示:

([AZ]+)所有大寫字母直到下一組

(\d{6})正好六位數

([CP]{1})正好一個CP字符

(.*)其他一切

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM