String Perl有没有办法确定文本字符串是否包含二进制数据

String Perl有没有办法确定文本字符串是否包含二进制数据,string,perl,binary,String,Perl,Binary,您好,目前我正在执行一个项目,需要从文本文件中读取一些字符串,并将这些字符串填充到XML文件中。但是在这个文件中有一些行包含二进制数据。有没有办法检查字符串是否包含二进制数据?在大多数情况下,以下正则表达式可能就足够了: m{ [^ # Consider the match a success if each of the following meta-characters do not match \w # Match word

您好,目前我正在执行一个项目,需要从文本文件中读取一些字符串,并将这些字符串填充到XML文件中。但是在这个文件中有一些行包含二进制数据。有没有办法检查字符串是否包含二进制数据?

在大多数情况下,以下正则表达式可能就足够了:

m{
    [^          # Consider the match a success if each of the following meta-characters do not match
        \w          # Match word
        \d          # Match digit
        \s          # Match whitespace
        [:punct:]   # Match punctuation
    ]
}x
本质上,文本必须至少包含一个不匹配的(二进制)字符:

  • \w
    -word
  • \d
    -数字
  • \s
    -空格
  • [[:punct:]
    -标点符号

    • Perl有文件测试操作符用于此:
      -T
      -B
      。然而,请注意,仅仅因为一个字符串被限制为一组特定的字符,并不意味着它就是我们所认为的文本。无论生成它的是什么,它仍然可能是二进制数据。

      感谢您建议对字符类进行否定。
      /[^[:print::[:space:]/