匹配正则表达式中的任何字符

时间:2015-09-02 02:00:44

标签: regex utf-8

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

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

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

我尝试使用像'\。\'这样的正则表达式,但它似乎无法正常工作。如何在utf8字符串中删除这些格式错误的字节?

2 个答案:

答案 0 :(得分:1)

猜测您的输入为\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

答案 1 :(得分:1)

我认为这里有几件事情要发生。我正在使用Kerwin的例子来猜测你的输入 - 但是放弃了双反斜杠,因为我没有推断出你将使用的是什么:\x99\xb3\x\y\x99\x\xb3

  1. 首先,你没有逃避你的反斜杠,所以你基本上告诉正则表达式引擎你要匹配一个文字句点(.),然后是另一个你没有提供的文字。 / LI>
  2. 其次,我认为你不需要匹配(因此从进一步的分析中删除)结束反斜杠;相反,我认为你需要将你的搜索部分放在lookeahead组中。
  3. 看看这是否能为您提供所期望的结果:(\\.)(?=\\)

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