0

字符 ̈ (unicode 0x308) 不能用“Western (ISO Latin 9)”编码表示。

我需要在许多 txt 文件中替换几个 (3) 这种特殊字符。理想的情况是我在 Mac 上运行的 TEXTWRANGLER 编辑器应用程序的一个正则表达式命令,这样我就可以在 Textwrangler 的查找和替换功能中使用(类似于 BBedit)。

以下是 3 个特殊字符:

  1. ä 变成 ä
  2. ö 进入 ö
  3. ü 进入 ü

(请注意第一个字母由两个字符组成(例如 a 和 ̈ unicode 0x308),因此它不是 WESTERN ISO LATIN compatibel。

我尝试了正则表达式(组),但没有成功:在 TEXTWRANGLER 我使用 find&replace 函数(包括 grep=regex 选项)

查找:(ä|ö|ü)+

替换: \1ä , \2ö , \3ü

任何想法?

4

1 回答 1

0

简短的

我刚刚用Notepad++对此进行了测试,尽管我不确定这是否适用于任何 Mac 文本编辑器替代品。

此方法是使用正则表达式中的字典进行条件替换。它更像是一种 hack,但假设它受到文本编辑器的支持,它确实可以工作。完成后,从文件底部删除字典。


代码

请参阅此处使用的正则表达式

(ä|ö|ü)(?=[\s\S]*Dictionary:[\s\S]*\1=([^\s=:]+))

替代品

\2

结果

输入

ä into a
ö into o
ü into u

输入 - 修改

这个输入包括最后的字典

ä into a
ö into o
ü into u

Dictionary:
ä=a
ö=o
ü=u

输出

a into a
o into o
u into u

Dictionary:
ä=a
ö=o
ü=u

解释

  • (ä|ö|ü)将组中的任一角色捕获到捕获组 1
  • (?=[\s\S]*Dictionary:[\s\S]*\1=([^\s=:]+))积极的前瞻确保接下来的匹配
    • [\s\S]*匹配任意字符任意次数
    • Dictionary:从字面上匹配Dictionary:(这可以更改为任何内容,但您应确保这是一个唯一的字符串,不会出现在您输入的其他任何地方)
    • [\s\S]*匹配任意字符任意次数
    • \1匹配与第一个捕获组最近匹配的相同文本
    • ==从字面上匹配等号字符
    • ([^\s=:]+)将集合中不存在的一个或多个字符(不是空格=:)捕获到捕获组 2
于 2017-11-15T17:41:29.883 回答