2011-12-02 51 views
0

我有这样的文字:使用组和子组解析正则表达式?

* 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. 

,我试图写一个正则表达式来obain所有asterixes和日期。但是我需要知道以前出现的异星的数量。

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

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

+1

你想在输出中做什么? –

回答

1

你可能更好做的东西匹配像

(?m)^(?<Stars>\*+)|(?<Date>\d{1,2}/\d{1,2} \d{2}) 

而且每场比赛都看,如果你有星星(第一组被定义)或日期。如果你将星星保存在变量中供以后使用。日期匹配时检查以前存储的星形变量。

+1

这只会得到第一颗星星...它不会得到后续的星星......但在开始时摆脱“^”会使它工作。 –

+0

错误........ http://regexr.com?2vc8v –

+1

它会得到所有星星,忘记提及您需要多行标志,或者只是将“(?m)”添加到正则表达式的开头。 – Qtax

0

我想你想

(?<Stars>\**) 

(?<Stars>\**)* 

这将可能是 '撞' 星号与 '空运行' 最新的比赛(因为*允许0或更多)。

或者:

(?<Stars>\*+)? 

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

0

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

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

错误http://regexr.com?2vc8p –