正则表达式用Textwrangler

时间:2017-11-15 17:00:21

标签: regex replace substitution textwrangler bbedit

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

我需要在许多txt文件中替换这些特殊字符中的几个(3)。理想的是我在Mac上运行的TEXTWRANGLER编辑器应用程序的单个正则表达式命令,因此我可以在Textwrangler的find& replace函数中使用(类似于BBedit)。

以下是3个特殊字符:

  1. ä进ä
  2. öintoö
  3. ü进ü
  4. (请注意第一个字母仍然存在两个字符(例如a和̈unicode 0x308),因此它不是WESTERN ISO LATIN的兼容性。

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

    发现:(ä|ö|ü)+

    REPLACE:\1ä,\2ö,\3ü

    任何想法?

1 个答案:

答案 0 :(得分:0)

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

此方法是使用正则表达式中的字典的条件替换。它更像是一个黑客,但它确实有效,假设它受到文本编辑器的支持。完成后,从文件底部删除字典。

代码

See regex in use here

(ä|ö|ü)(?=[\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