gpt4 book ai didi

java - 如何删除括号内的文字

转载 作者:行者123 更新时间:2023-11-30 03:57:04 26 4
gpt4 key购买 nike

我想处理从 Wikipedia API 检索到的文章,以便可以仅显示纯文本。我想要删除的内容看起来有点像:

 {{Infobox scientist
| name = Albert Einstein
| image = Einstein 1921 by F Schmutzer.jpg
| caption = Albert Einstein in 1921
| birth_date = {{Birth date|df=yes|1879|3|14}}
| birth_place = [[Ulm]], [[Kingdom of Württemberg]], [[German Empire]]
| death_date = {{Death date and age|df=yes|1955|4|18|1879|3|14}}
| death_place = {{nowrap|[[Princeton, New Jersey]], United States}}
| children = [[Lieserl Einstein|"Lieserl"]] (1902–1903?)<br />[[Hans Albert Einstein|Hans Albert]] (1904–1973)<br />[[Eduard
Einstein|Eduard "Tete"]] (1910–1965)
| spouse = [[Mileva Marić]]&nbsp;(1903–1919)<br />{{nowrap|[[Elsa Löwenthal]]&nbsp;(1919–1936)}}
| residence = Germany, Italy, Switzerland, Austria, Belgium, United States
| citizenship = {{Plainlist|
* [[Kingdom of Württemberg]] (1879–1896)
* [[Statelessness|Stateless]] (1896–1901)
* Switzerland (1901–1955)
* [[Austria–Hungary]] (1911–1912)
* [[German Empire]] (1914–1918)
* [[Weimar Republic]] (1919–1933)
* United States (1940–1955)
}}

现在我想知道如何删除 {{}} 之间的文本。这就是我尝试做的:

wikitext = wikitext.replaceAll("\\{\\{(.*?)\\}\\}", "");

但它并没有真正发挥作用。我猜想“括号中的括号”会引起问题。 Stackoverflow 上有很多关于删除括号之间的文本的讨论,但我没有找到任何可以解决此问题的内容

最佳答案

您无法与 java 正则表达式匹配未确定级别的嵌套括号。但是,对于只有一个深度级别的特定示例,并假设末尾缺少右括号,您可以使用以下内容:

\\{\\{(?>[^{}]++|\\{\\{[^}]++}})*}}

如果级别数不确定,您可以:

1) 编写一个逐字符遍历的解析器,并在遇到 {{ 时增加堆栈,并在遇到 }} 时减少堆栈。当标志等于 0 时,括号平衡。

2) 执行全部替换,直到不再需要替换: \\{\\{[^{}]*}} (与最内层匹配)

3)使用支持递归的第三方正则表达式库

4)找到一个处理这种格式的工具(也许它存在)

关于java - 如何删除括号内的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22897612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com