正则表达式(模式匹配)

原创 2018年04月16日 12:07:49
1.简介
正则表达式是在处理字符串是必须掌握的。
判断字符串是否符合某一模式


2.特殊字符
1)^$*?+{2}{2,}{2,5}|
2)[][^][a-z]
3)\s\S\w\W
4)[\u4E00-\u9FA5]()\d


【代码演示】
import re

line="heelllllleeooe123"
line1="13250936269"
line2="你好世界"
regex_str0 = "^h.*" #'^'以h开头,'.'后接任意字符,'*'任意多次变换
regex_str1 = ".*3$"#以3结尾的字符串
regex_str = ".*?(e.*?e).*"#‘?’从左边开始匹配匹配到第一个e,输出第一个e到第二个e的字符串
regex_str2 = ".*(e.*e).*"#从右边开始匹配'()'提取括号中的内容
regex_str3 = ".*(e.+e).*"#从右边开始匹配
regex_str4 = ".*(e.{1}e).*"#两个e之间出现字符数为1个的字符
regex_str5 = ".*(e.{1,2}e).*"#两个e之间出现字符数大于1次小于2次的字符
regex_str6 = "([hijk]eelll)"#[]内的字符满足任一条件就成立
regex_str7 = "(1[0-9]{10})"#在1之后的字符有满足0-9的任意10位数字
regex_str8 = "(1[^1]{10})"#在1之后的字符有满足不等于1的任意10位数字
regex_str9 = "([\u4E00-\u9FA5]+)"#[\u4E00-\u9FA5]满足任意汉字‘+’一个以上的字符都可以(中文,连续)
regex_str10 = ".*?(\d+)"#\d提取数字
match_obj = re.match(regex_str,line)#返回结果
match_obj1 = re.match(regex_str2,line)
match_obj2 = re.match(regex_str3,line)
match_obj3 = re.match(regex_str4,line)
match_obj4 = re.match(regex_str5,line)
match_obj5 = re.match(regex_str6,line)
match_obj6 = re.match(regex_str7,line1)
match_obj7 = re.match(regex_str8,line1)
match_obj8 = re.match(regex_str9,line2)
match_obj9 = re.match(regex_str10,line)
if re.match(regex_str0,line):#re判断是否匹配(match_obj是否有结果)
    print("以h开头")
if re.match(regex_str1,line):#re判断是否匹配
    print("以3结尾")
if match_obj:#非贪婪匹配,正向匹配
    print(match_obj.group(1))
if match_obj1:#贪婪匹配,反向匹配
    print(match_obj1.group(1))
if match_obj2:
    print(match_obj2.group(1))
if match_obj3:
    print(match_obj3.group(1))
if match_obj4:
    print(match_obj4.group(1))
if match_obj5:
    print(match_obj5.group(1))
if match_obj6:
    print(match_obj6.group(1))
if match_obj7:
    print(match_obj7.group(1))
if match_obj8:
    print(match_obj8.group(1))
if match_obj9:
    print(match_obj9.group(1))


【输出结果】
以h开头
以3结尾
ee
eooe
eooe
eooe
heelll
13250936269
13250936269
你好世界
123


2.python示例

python出生年月提取示例
【代码示例】
import re

line = "张伟出生于1996年2月1日"
line = "张伟出生于1996-2-1"
line = "张伟出生于1996-02-01"
line = "张伟出生于1996-02"
line = "张伟出生于1996年2月"

regex_str = ".*出生于(\d{4}[年/-]\d{1,2}([月/-]\d{1,2}|[月/-]\d{1,2}[日]|[月/-]$|$))"
match_obj =re.match(regex_str,line)

if match_obj:
    print(match_obj.group(1))

常用正则表达式

(来源于https://blog.csdn.net/Angelahhj



版权声明:版权归作者个人所有,未经本人授权,只能用于学习、交流、研究。 https://blog.csdn.net/qq_31847191/article/details/79958892

Perl 实战应用

perl 是一门实用的报表开发语言,主要用于数据的采集,报表的呈现,数据入库,格式化报表,等等
  • 2016年06月16日 19:32

第11章 使用正则表达式的模式匹配(一)

正则表达式 (regular expression) 是一个描述字符模式的对象。JavaScript 的 RegExp 类表示正则表达式,而 String 和 RegExp 都定义了使用正则表达式进行...
  • pengju_guo
  • pengju_guo
  • 2011-11-29 13:22:01
  • 3615

mysql模式匹配和正则表达式

SQL模式匹配 _  下划线匹配任何单个字符 %  匹配任意数码字符   正则表达式的匹配 使用REGEXP和NOT REGEXP操作符   ‘.’匹配任何单个的字符。 字符类“[.....
  • clj9017
  • clj9017
  • 2014-07-06 12:11:49
  • 938

scala模式匹配和正则表达式

匹配字面量和常量
  • fanshadoop
  • fanshadoop
  • 2014-06-26 10:37:57
  • 6166

正则表达式与模式匹配

本文介绍正则表达式入门级的一些知识,后续会有所补充。 正则表达式概念 正则表达式元字符 正则表达式的应用   正则表达式概念 正则表达式(regularexpression, RE...
  • Angelahhj
  • Angelahhj
  • 2015-05-05 17:08:35
  • 1177

正则表达式和模式匹配简介(二)

正则表达式和模式匹配简介——字符表示作者:张桂权(摘自《 正则表达式袖珍手册》一书。译者,张桂权。可以从http://download.csdn.net/source/346896下载完整的译稿。如果...
  • Natureboy520
  • Natureboy520
  • 2008-01-29 20:02:00
  • 2217

Scala中正则表达式以及与模式匹配结合

正则表达式 //"""原生表达 val regex="""([0-9]+)([a-z]+)""".r val numPattern="[0-9]+".r val numb...
  • yizheyouye
  • yizheyouye
  • 2015-10-17 15:45:51
  • 7742

正则表达式--模式匹配--特殊变量(1)

$` | $& | $’ | $1 | $2 | $n   >>>每一次成功的匹配了一个模式(包括替换),操作符都会把变量 $`|$&|$’分别设置为匹配内容左边的内容,匹配的内容和匹配右边的文...
  • bangemantou
  • bangemantou
  • 2012-05-11 20:26:52
  • 1610

Java中正则表达式、模式匹配与信息抽取

正则表达式相关介绍详细参考: http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html 引言...
  • tanzhangwen
  • tanzhangwen
  • 2013-09-25 15:50:03
  • 2991
收藏助手
不良信息举报
您举报文章:正则表达式(模式匹配)
举报原因:
原因补充:

(最多只允许输入30个字)