python|正则表达式


本文仅个人学习总结。
image

一、常用正则

方法:替换
foo_rep_g=re.sub(r'g,|g,|g |g',"$",foo)
#把foo中指定的字符换成空
普通字符查找替换
foo_drop_none=re.sub(r' ',"",foo_rep_g) #去除所有空格

foo_drop_kuohao=re.sub(u"\\(.*?\\)|\\(.*?\\)|\\(.*?\\)|\\(.*?\\)|\\{.*?}|\\[.*?]", "", foo_drop_none)   #去除括号里的(中英文版混合

foo_drop_numbers=re.sub(r'[0-9]',"",foo_drop_kuohao)
#去除数字

foo_drop_chufang=re.sub(r'.*:|.*:|.*。',"",foo_drop_numbers)  #冒号,句号前面的都去掉
去掉指定字符前面/后面的全部内容
foo_drop_chufang=re.sub(r'.*:|.*:|.*。',"",foo_drop_numbers)  #冒号,句号前面的都去掉

foo_drop_chufang=re.sub(r':.*|:.*|。.*',"",foo_drop_numbers)  #冒号,句号后面的都去掉

二、python中使用正则表达式

//主函数调用
data.dropna() #去NAN
for foo in data['组成']:
    print(eliminate_sth(foo))
#每一行若干药,只保留药名和分隔符(逗号,或其他符号),最后分割
#先清洗药名,药名里去除括号等不需要的信息
#把一整条处方用分隔符分割
#一个个加到列表中,不需要的数据直接筛去
def eliminate_sth(foo):
    answer = []
    drop_kuohao = re.sub(r'\(.*?\)|\(.*?\)|\(.*?\)|\(.*?\)|\【.*?\】',"",foo)  #去掉括号和括号里的内容
    drop_jianfa=re.sub(r'醋|炙|制|炒|炮|煅|盐|酒|法',"",drop_kuohao)  #去掉炙/制等煎法
    drop_fuhao=re.sub(r'\r|\n',"",drop_jianfa)
    res = re.split(r',|,',drop_fuhao)   #按照逗号分割药名
    for foo1 in res:
        if len(foo1)<2:continue   #去空/单个字符
        elif '各'and'两' in foo1:continue   #去各二两
        elif '升' in foo1:continue  #去水三升
        else:
            answer.append(foo1)
    return answer

三、语法

  • runoo+b +前面的字符出现1次/多次,至少一次
  • runoo*b 0次/1次/多次
  • runoo?r 0次/1次
非打印字符(转义字符)

\cx Control+字母(大小写都可)
\f 换页符
\n 换行符
\r 回车符
\s 空白字符,空格/制表符/换页符
\S 非空白字符
\t 制表符
\v 垂直制表符

特殊字符

^ 开始
$ 结束
() 子表达式的开始和结束
1次/多次
0次/1次/多次
?0次/1次

限定符

等价于{1,}
等价于{0,}
? 等价于{0,1}
{n} 匹配确定n次
{n,} 至少n次
{n,m} 至少n次之多m次

定位符

^
$
\b 匹配一个单词边界
\B 匹配非单词边界
/\bCha/ ///匹配 Chapter
/ter\b/ ///匹配 Chapter
/\Bapt/ ///匹配 Chapter
限定符和定位符不可同时使用

元字符


^
$
*
+
?
{n}
{n,}
{n,m}
?

//当?加在任何限制符后面时,匹配模式贪婪
//对于“oooo”
'o+?'   匹配单个"o"
'o+'    匹配所有'o'

.   匹配除换行符\n \r外的任何单个字符
(pattern)  匹配pattern并获取匹配项
(?:pattern)
(?=pattern)
(?!pattern)
(?<!pattern)
x|y  x或y
[xyz]  字符集合,匹配包含的任意一个字符
[^xyz]  负值字符集合,匹配未包含的任意字符
[a-z]  字符范围
[^a-z]  负值字符范围,不在指定范围内的任意字符
\b  单词边界
\B  非单词边界
\cx
\d  数字,[0-9]
\D  非数字[^0-9]
\f  换页符
\n  换行符
\r  回车符
\s  空白字符
\S  非空白字符
\t  制表符
\v  垂直制表符
\w  字母/数字/下划线,[A-Za-z0-9_]
\W  非字母/数字/下划线
\xn  
\num  
\n  
\nm  
\nml  
un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值