1

我需要使用 mediawiki 语法(表格)解析文件。

我知道 sed 或 awk 可以做到,但我不是这些专家。

我需要找到以下模式:

beginning_of_line| [[text]] ||  random_stuff_until_newline

管道和刹车片之间可能有(或没有)空间。我需要输出文本

对我有什么解决方案吗?

谢谢

4

3 回答 3

2

解析这样的文本就像解析 XML 或 HTML。正则表达式不太适合这种类型的文档。您应该尝试找到适合该工作的 Python 或 Perl 模块。

但是,这里有一个sed命令可以在您作为示例提供的简单情况下工作。

sed 's/^[^|]*|[[:space:]]*\[\[\([^]]\+\)\]\].*/\1/' inputfile
于 2012-05-28T17:57:43.000 回答
1

我会寻找一个 Mediawiki 解析器。它必须存在于某个地方。

如果做不到这一点,如果您有 mediawiki 的语法,您可以使用 ANTLR 或类似的语法生成解析器,具体取决于它是哪种语法。

如果您没有语法或由于学习曲线而不想这样做,那么您需要一些可靠的方法来区分您所说的“文本”和您所说的随机内容。管道是否有保证在那里?如果在 Java 中是这样,您可以使用管道作为拆分参数来执行 String.split()。

你是这个意思吗?

于 2012-05-28T17:39:53.057 回答
0

这可能对您有用(GNU sed):

sed 's/^[^|]*|\s*\[\[\([^]]*\(][^]]*\)*\)]]\s*||.*/\1/;t;d' file
于 2012-05-28T20:23:12.980 回答