【问题标题】:Matching any character in regex匹配正则表达式中的任何字符
【发布时间】:2015-09-02 02:00:44
【问题描述】:

我有一个'utf-8'字符串,通常是这样的

'\x99\xb3...' 等等。

但是,可能存在格式错误的字节,例如 '\x\y' 等。

我尝试过使用 '\.\' 之类的正则表达式,但它似乎不起作用。如何在我的 utf8 字符串中删除这些格式错误的字节?

【问题讨论】:

  • 您为此使用什么编程语言或文本编辑器?不同的正则表达式实现有不同的特性。
  • @KennethK。我正在使用 python

标签: regex utf-8


【解决方案1】:

我认为这里发生了几件事。我正在使用 Kerwin 的示例来猜测您的输入 - 但删除双反斜杠,因为我不认为这是您将要使用的内容:\x99\xb3\x\y\x99\x\xb3

  1. 首先,您没有转义反斜杠,因此您实际上是在告诉正则表达式引擎您想匹配一个文字句点 (.),然后是另一个您没有提供的文字。
  2. 其次,我认为您不需要匹配(从而从进一步分析中删除)结束反斜杠;相反,我认为您需要将这部分搜索放在一个前瞻组中。

看看这是否给你预期的结果:(\\.)(?=\\)

您可以在 https://regex101.com/r/eB8mH1/1 在线查看(并修改)它。

【讨论】:

    【解决方案2】:

    猜你的输入是\x99\xb3\\x\\y\x99\\x\xb3,然后删除所有\x\y

      import re
      p = re.compile(r'\\[a-z](?!\w)')
      test_str = "\x99\xb3\\x\\y\x99\\x\xb3"
      result = re.sub(p, "",test_str)
      print test_str
      print result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-22
      • 2011-02-24
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多