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