我需要使用mediawiki语法(表格)解析文件。
我知道sed或awk可以做到,但我不是这些的专家。
我需要找到以下模式:
beginning_of_line| [[text]] || random_stuff_until_newline
管道和支架之间可能存在(或没有)空间。我需要一个输出文本
对我来说有什么解决方案吗?
Thx
答案 0 :(得分:2)
解析这样的文本就像解析XML或HTML一样。正则表达式并不适合这种类型的文档。您应该尝试找到suited for the job的Python或Perl模块。
但是,这是一个sed
命令,它将在您提供的简单案例中起作用。
sed 's/^[^|]*|[[:space:]]*\[\[\([^]]\+\)\]\].*/\1/' inputfile
答案 1 :(得分:1)
我会寻找一个Mediawiki解析器。它必须存在于某个地方。
如果没有这个,如果你有mediawiki的语法,你可以使用ANTLR生成一个解析器,或者根据它的语法类型生成一个解析器。
如果由于学习曲线而没有语法或者不想这样做,那么你需要一些可靠的方法来区分你所谓的“文本和你所谓的随机内容。”保证在那里的管道?如果在Java中你可以使用管道作为拆分参数来做String.split()。
这是什么意思?答案 2 :(得分:0)
这可能适合你(GNU sed):
sed 's/^[^|]*|\s*\[\[\([^]]*\(][^]]*\)*\)]]\s*||.*/\1/;t;d' file