【问题标题】:regex - convert "fossil" to "fossil" [closed]正则表达式 - 将“fossil”转换为“fossil”[关闭]
【发布时间】:2020-06-09 03:04:01
【问题描述】:

如何使用正则表达式将fossil 转换为fossil

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案。另见:How to Ask
  • 是的,但是反对派似乎有点荒谬......

标签: regex shell


【解决方案1】:

您在浏览器中实际拥有的是所谓的全字母拉丁小写字母,它与标准宽度的fossil 不同。

如果这个问题更广泛,你如何将 UTF-8 全宽转换为标准 ASCII 设置的拉丁字符,据我所知,你必须明确地做到这一点。我不知道任何图书馆,但可能有。

如果全角编码与标准字符集的顺序相同,您可以使用的另一件事是在二进制编码中添加一个特定数字。

字符编码:

f - U+FF46
o - U+FF4F
s - U+FF53
i - U+FF49
l - U+FF4C

【讨论】:

  • 感谢您分享有关编码的注意事项。直到看到您的回答和评论,我才意识到这一点。
【解决方案2】:

你可以试试这个:

echo 'f o s s i l' | sed 's_ __g'

结果将是fossil

说明

sed 是流编辑器。 s_<text to replace>_<replacement>_g 格式告诉 sed 将空白替换为空。换句话说,删除空白。

如果你想使用tr 命令,你可以这样做:

echo 'f o s s i l' | tr -d "[:blank:]"

这将删除空白并导致fossil

说明

tr 已翻译。 -d 告诉 translate 删除空格,用 [:blank:] 注明

【讨论】:

  • s_ __g有什么神奇之处,可以分享一下链接吗?
  • 有趣,您更喜欢'_' 而不是不涉及路径分隔符的'/'
  • @DavidC.Rankin 是的,虽然 / 被用作标准分隔符,但我遇到了必须转义斜杠然后 sed 正则表达式看起来很神秘的情况。使用下划线作为分隔符让我看起来更容易阅读。
  • 关键点,o 不是标准的 ASCII ''o'',看起来它需要扩展字符集...进一步分析,如果复制粘贴,则没有任何字母转换为字节码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2017-09-10
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
相关资源
最近更新 更多