【发布时间】:2015-11-02 02:51:12
【问题描述】:
如何在 Python 中搜索给定字符串中的 10 个 isprint 字符序列?
使用 GNU grep,我只需执行 grep [[:print:]]{10}
【问题讨论】:
标签: python regex character-class
如何在 Python 中搜索给定字符串中的 10 个 isprint 字符序列?
使用 GNU grep,我只需执行 grep [[:print:]]{10}
【问题讨论】:
标签: python regex character-class
由于 Python re 模块不支持 POSIX,您必须借助字符类来模拟它。
您可以使用regular-expressions.info 中的一个并添加限制量词{10}:
[\x20-\x7E]{10}
见demo
或者,您可以使用声称支持 POSIX 字符类的Matthew Barnett regex module(支持 POSIX 字符类。)。
【讨论】:
re.sub() 方法中使用时,这个字符类在 Python 3 [`~!@#$%^&*()_=+\[\]{}\\\|;:\"\'<>.,/?] 中为我工作
[`~!@#$%^&*()_=+\[\]{}\\\|;:\"\'<>.,/?] 只匹配 ASCII 标点符号,它与“可打印字符”的概念无关。因此,如果您要使用 POSIX 字符类,它将是 [[:punct:]]。要在 Python 中匹配标点符号,您可以使用 [^\w\s],尽管有更好、更精确的模式。
[[:print]] 类误读为[[:punct]]。感谢您的纠正。