【发布时间】:2017-11-15 17:00:21
【问题描述】:
字符 ̈(unicode 0x308)不能用“Western (ISO Latin 9)”编码表示。
我需要在许多 txt 文件中替换几 (3) 个这种特殊字符。理想的情况是我在 Mac 上运行的 TEXTWRANGLER 编辑器应用程序的一个正则表达式命令,这样我就可以在 Textwrangler 的查找和替换功能中使用(类似于 BBedit)。
以下是 3 个特殊字符:
- ä 变成ä
- ö 成ö
- ü入ü
(请注意第一个字母由两个字符组成(例如 a 和 ̈ unicode 0x308),因此它不是 WESTERN ISO LATIN compatibel。
我尝试了正则表达式(组),但没有成功: 在 TEXTWRANGLER 我使用 find&replace 功能(包括 grep=regex 选项)
查找:(ä|ö|ü)+
替换:\1ä、\2ö、\3ü
有什么想法吗?
【问题讨论】:
-
你不能用一个正则表达式命令来做到这一点。这相当于创建正则表达式不支持的条件替换。到目前为止。至少AFAIK
-
使用单个正则表达式执行此操作的唯一可能方法是将要用作替换的所有字符附加到文件末尾,然后匹配它,如下所示:
ä([\s\S]*)(ä)替换$2$1。将其中的多个合并为一个,您将得到ä([\s\S]*)(ä)|ö([\s\S]*)(ö)替换为$2$1$4$3。理想情况下,您希望使用分支重置,以便您可以将(?|ä([\s\S]*)(ä)|ö([\s\S]*)(ö))替换为$2$1。这是我知道有条件替换的唯一方法。否则,您将不得不使用单独的正则表达式。
标签: regex replace substitution textwrangler bbedit