我有这样的文字:
* 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})
但由于某种原因它找不到星号。
我知道我可以先拆分文本,但我想尝试使用正则表达式
答案 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)