我尝试使用一行regex解析导出为taskpaper格式的Omnifocus项目,但是捕获标记时遇到了困难,特别是每个@
标记都有一个捕获组。你知道吗
以下是一个任务书片段:
- My Project
- My Sub-Project @parallel(true) @autodone(false) @done(2017-04-01 11:12)
- Task A: Do (1, 2, 3, @) @parallel(true) @autodone(false) @done(2017-04-01 10:43)
- Task B: Do (4, 5, 6, @) @parallel(true) @autodone(false) @flagged @done(2017-04-01 10:58)
- Task C: Read https://stackoverflow.com/ @parallel(true) @autodone(false) @flagged @done(2017-04-01 10:41)
以及我使用的Python正则表达式:
^(\t*)-(.*?)((@\w+\((.*)\))*)$
这里有a link with everything set up as above来尝试一下。你知道吗
您可以将字符串的整个部分与@-组匹配,然后拆分或与需要用另一个嵌套的
re.findall
处理的部分匹配:结果:
见Python demo
主要图案细节:
^
-字符串开头(\t*)
-第1组:零个或多个选项卡-\s*
-连字符和0+空格(.*?)
-第2组:除换行符以外的任何0+字符((?:\s+@\w+(?:\([^)]*\))?)*)
-第3组捕获0+个\s+
-1+空格@\w+
-a@
后跟1+字字符(?:\([^)]*\))?
-一个可选的\(
-a(
[^)]*
-0+除)
以外的字符\)
-a)
$
-字符串结尾。你知道吗相关问题 更多 >
编程相关推荐