【发布时间】:2020-05-11 07:33:22
【问题描述】:
我发现了一些包含"u0627u0644u0649 u0627u0644u0623" 之类的行的数据。通常,这些更像\u0627\u0644\u0649 \u0627\u0644\u0623,但数据出了点问题。为了纠正它,我唯一的选择是调整那里的内容。
我没有发现任何字符串是"u0627u0644u0623 u0644 u0627" 和“普通单词”的组合的情况,但这可能会发生。
我还想安全地转换 "\u0627\u0644" 之类的任何内容或其组合,以便正确转换像“我的字符串 \u0627\u0644 u0627u0644u0623 u0644 u0627."”之类的字符串。
谁能推荐一个正则表达式或适当的方法来安全地“修复”这些字符串?
更新
如果我们只更正我们第一次测试的字符串以确保它只包含像u0627u0644u0649 u0627u0644u0623 这样的字符串呢?这可以安全地(以及如何)完成吗?
现在,我正在使用
^(u[A-Fa-f0-9]{4}\s?)+$
我的正则表达式足以满足所需的目的。我也同意可能没有保证的解决方案,但到目前为止这似乎在我的测试用例中有效。
【问题讨论】:
-
如果常规文本与这些损坏的十六进制代码粘在一起,您将无法获得 100% 安全的解决方案。
-
如果我们只更正我们第一次测试的字符串以确保它只包含像“u0627u0644u0649 u0627u0644u0623”这样的字符串怎么办?这可以安全地(以及如何)完成吗?谢谢!
-
是的,
^(?:\W*u[A-Fa-f0-9]{4})\W*$ -
谢谢。我对其进行了测试,它只为 preg_match 为“u0f40”之类的字符串返回 true,而不是“u0f40 u0f40”或“u0f40u0f40 u0f40”之类的字符串,并且它对“\u0f40”之类的字符串返回 true,这是不应该的。
-
我相信这行得通 - 你能确认一下吗?
^(u[A-Fa-f0-9]{4}\s?)+$