Python:如何在正则表达式中使用POSIX字符类?

14

我如何在Python中搜索一个给定字符串中的10个isprint字符序列?

使用GNU grep,我可以简单地执行grep [[:print:]]{10}

1个回答

12

在使用re.sub()方法时,Python 3中的这个字符类对我很有效:[\~!@#$%^&*()_=+[]{}\|;:"'<>.,/?]`。 - Allan Tsai
1
@Iota,“[`~!@# $%^&*()_=+[]{}\|;:"'<>.,/?]” 只能匹配 ASCII 标点符号,与“可打印字符”的概念无关。因此,如果您要使用 POSIX 字符类,则应使用“[[:punct:]]”。要在 Python 中匹配标点符号,可以使用“[^\w\s]”,尽管有更好和更精确的模式。 - Wiktor Stribiżew
1
我的错误!我把[[:print]]类误读为[[:punct]]了。感谢您的纠正。 - Allan Tsai
答案中的正则表达式无法像grep(GNU grep)那样匹配Unicode非ASCII字符。 - pabouk - Ukraine stay strong
2
@pabouk-Ukrainestaystrong 然后看答案底部。只需在控制台/终端中安装PyPi正则表达式模块(pip install regex),然后使用import regexpattern = regex.compile(r'[[:print:]]{10}') - Wiktor Stribiżew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接