【发布时间】:2014-12-19 16:50:51
【问题描述】:
我正在尝试从这样的文本中仅选择名称(维基百科的斯洛伐克语转储):
|Meno = Hans Joachim
|Plné meno = Aristoteles (???????????)
|Plné meno = Francis Bacon
|Plné meno = Sokrates ({{Cudzojazyčne|grc|????????|pc=n}})
|Meno = Svätý František z Assisi <br /> ''(Giovanni Battista Bernardone)''
|Meno = Friedrich Ludwig Gottlob Frege
|Meno = Adam František Kollár (Kolárik)
|meno = [[J. Edgar Hoover|John Edgar Hoover]]
|meno = [[Benedikt XIV. (1740 – 1758)|Benedikt XIV.]]
|meno = [[Milan Rastislav Štefánik|Milan Rastislav Štefánik]]
|Meno = '''Ján Filc'''
|Meno = Jean le Rond d'Alembert
输出应该是这样的:
Hans Joachim
Aristoteles
Francis Bacon
Sokrates
Svätý František z Assisi
Friedrich Ludwig Gottlob Frege
Adam František Kollár (Kolárik)
J. Edgar Hoover|John Edgar Hoover
Benedikt XIV. (1740 – 1758)|Benedikt XIV.
Milan Rastislav Štefánik|Milan Rastislav Štefánik
Ján Filc
Jean le Rond d'Alembert
当名字写正确时,这个正则表达式工作正常:= *(.*?)$
但是当有像“(????????????)”,HTML标签和“{{”和“}}”之间的东西时,我无法选择没有不需要的子字符串的名称。
我在this regex tester page (http://regex101.com/r/gS8iQ9/1) 上尝试了很多选项,但都没有奏效。
在我使用的 Java 代码中
Pattern pattern = Pattern.compile("= *(.*?)$");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
String foundSubstring = matcher.group(1);
...
感谢您提供有关如何在“=”之后选择文本但不带问号、HTML 代码等的任何帮助或建议。
【问题讨论】: