使用Python re.search匹配含数字、符号、字母字符串的问题
正则表达式匹配优化方案
替代逐个指定符号的字符集写法:
如果你需要匹配中间部分包含任意可打印字符(字母、数字、符号、空格),无需逐个罗列符号类型,可以用以下几种方式修改正则:匹配除换行外的所有字符
这是最通用的写法,能覆盖所有可见和部分不可见字符(除换行):re.search(r'\d [^\n]+ \d', text)其中
\d等价于原正则的[0-9],[^\n]+表示匹配任意非换行字符1次及以上。仅匹配ASCII可打印字符
如果你只想匹配键盘上能输入的可打印字符(避免控制字符),可以用ASCII范围匹配:re.search(r'\d [ -~]+ \d', text)[ -~]对应ASCII中从空格(32)到波浪号(126)的所有可打印字符。精准匹配字母数字、空白和标点
若需要明确匹配字母数字、空白以及所有标点符号(含Unicode标点),可以用预定义字符集组合:re.search(r'\d [\w\s\p{P}]+ \d', text)这里
\w匹配字母/数字/下划线,\s匹配空白,\p{P}匹配所有标点符号(需Python 3.6+支持)。
处理贪婪匹配问题:
若文本中存在多组数字 内容 数字的结构,上述写法可能会匹配到最长的结果,此时可以用非贪婪模式(在+后加?):re.search(r'\d [^\n]+? \d', text)
内容的提问来源于stack exchange,提问作者pythonuser43343
相关产品推荐
相关产品推荐

