用组和子组解析正则表达式?

时间:2011-12-02 12:28:15

标签: c# regex

我有这样的文字:

*   Ikke 26/12 11.
**  Ikke 24/12 11.
*** Ikke 22/8 11. Ikke 29/8 11. Ikke 5/9 11. Ikke 12/9 11. Ikke 19/9 11. Ikke 26/9 11. Ikke 3/10 11. Ikke 10/10 11. Ikke 17/10 11. Ikke 24/10 11. Ikke 31/10 11. Ikke 7/11 11. Ikke 14/11 11. Ikke 21/11 11. Ikke 28/11 11. Ikke 5/12 11. Ikke12/12 11. Ikke 19/12 11.
****    Ikke 25/12 11.

我正在尝试编写一个正则表达式,以获取所有星号和日期。但我需要知道之前出现的星号数量。

到目前为止,我已提出(?<Stars>\**)*(?<Date>\d{1,2}/\d{1,2} \d{2})但由于某种原因它找不到星号。

我知道我可以先拆分文本,但我想尝试使用正则表达式

4 个答案:

答案 0 :(得分:1)

你最好在

之类的东西上进行匹配
(?m)^(?<Stars>\*+)|(?<Date>\d{1,2}/\d{1,2} \d{2})

每场比赛都会看到你是否得到了明星(第一组被定义)或日期。如果你有星星将它保存在变量中供以后使用。当日期匹配时,检查先前存储的星形变种

答案 1 :(得分:0)

我猜你想要

(?<Stars>\**)

不是

(?<Stars>\**)*

这可能会“删除”星号的最新匹配“空运行”(因为*允许0或更多)。

可替换地:

(?<Stars>\*+)?

(匹配1个或多个* - 可选)

答案 2 :(得分:0)

这应该有用......基本上你没有说什么忽略日期和星星之间的东西......

(?<Stars>[*]*)(?<ignore>.*?)(?<Date>\d{1,2}/\d{1,2} \d{2})

答案 3 :(得分:0)

这里:

(?<astrix>[\*]+)|(?<Date>\d{1,2}/\d{1,2} \d{2})

http://regexr.com?2vc8s