Java RegExp:替换引号""为英语""(思维环境)

Voj*_*ěch -1 java regex typography

是否有任何简单的方法可以通过正则表达式将键盘上的引号转换为英语引号,但请确保保留HTML实体?例如,我们想翻译some "text",但我们不想要<span id="blah">.

谢谢!

编辑:

有些人建议,我没有尝试过自己.我曾经尝试过 - 我不想表现出不影响你.但没有成功:

string.replace(
     "(?<!\"|\\w|=)\"(?!\\ |\")((?:[^\"]++|\")+?)(?<!\\ |\")\"(?![\"A-Za-z\u00C0-\u02FF\u0370-\u1EFF])()", 
     "“$1”");
Run Code Online (Sandbox Code Playgroud)

但我无法管理不在HTML标签中翻译这些引号.

T.J*_*der 6

使用正则表达式会很麻烦,因为HTML不是常规语言.你的用例是如此有限(基本上,只是跳过属性值周围的引号),只要你付出足够的努力(就你自己而言),你就可以为它提出一个正则表达式,但我会怀疑(尤其是因为在属性="属性之间可以存在任何数量的空白,这可能使它们看起来很像文本).

要可靠地执行此操作,您必须真正解析 HTML,并且只处理非标记文本.但是,您不必编写解析器,您可以使用已编写的几个解析器中的任何一个.JSoup是一个特别着名的.