正则表达式

断言的几种方式
(1)\b  单词边界    \b并不匹配任何内容,他只是标记文本的位置   整个文本的第一个单词一定是边界 .,|'",。等等也是边界 
例如
row tomorrow.haha.
使用正则表达式
\b(\w+)  
可以匹配如下内容
(2)^  开头后面必须是 ***
$   结束之前必须是***
------------------------------------举例-------------------------
string = '''hahahha cfldk
bbbbb sdfdl;
ccccc sdmflkd
'''
print(string)
#(?m)是多行模式   不加是普通模式匹配整个文本  在多行模式下  一共有4行  最后一行什么都没有是 空‘’
pattern1 = re.compile(pattern='(?m)^(\w?)')
pattern2 = re.compile(pattern='^\w?')
res1 = pattern1.findall(string=string)
res2 = pattern2.findall(string=string)
#findall 返回一个列表  ['h', 'b', 'c', '']  里表里面装的字符串
print(res1)
print(res2)
#finditer 返回的是一个迭代器,适合处理大量数据或当只需要部分匹配结果时。
res = pattern1.finditer(string)
for i in res:
    print(i)   #默认是整个匹配对象  i 是一个 Match 对象。这个对象包含了关于每一次匹配的所有信息。
    print(i.group())  #打印正则匹配的结果字符串   返回匹配到的文本。
    print(i.group(0))  #打印正则匹配的结果字符串   返回匹配到的文本。
    #print(i.string)  #打印正则匹配的结果字符串   返回整个原始字符串。
    #print(i.start())  #打印正则匹配的开始位置
    #print(i.end())   #打印正则匹配的结束位置
'''
import re
pattern = re.compile(r'(\w+) (\w+)')
string = "John Doe is a developer"
res = pattern.finditer(string)
for i in res:
    print("Entire Match:", i.group(0))  # 等同于 i.group()
    print("First Group:", i.group(1))
    print("Second Group:", i.group(2))
    print("All Groups:", i.groups())   #返回所有子组的文本,以元组的形式返回。在这个例子中,("John", "Doe") 是所有子组的文本。
    print()
    
i.group(0) 或 i.group():
返回整个匹配的文本。在这个例子中,"John Doe" 是整个匹配的文本。
i.group(1):
返回第一个子组的文本。在这个例子中,"John" 是第一个子组的文本。
i.group(2):
返回第二个子组的文本。在这个例子中,"Doe" 是第二个子组的文本。
i.groups():
返回所有子组的文本,以元组的形式返回。在这个例子中,("John", "Doe") 是所有子组的文本。
'''
--------------------------------------------------------------------------------
(3)    (?m) 表示多行模式
       (?s) 表示单行模式    默认模式:点号 . 不匹配换行符 \n。单行模式 (?s):点号 . 可以匹配任何字符,包括换行符 \n。
       (?i) 不区分大小写
       
(4)环视的用法如下图:
import re
string = '''
hahahha cfldk
bbbbb sdfdl;
ccccc sdmflkd
'''
#前面是bb 后面是字母 的字符串  但是不包含前面的 bb
pattern1 = re.compile(pattern='(?<=bb)\w+')
#结果是匹配 bbb  而不是 bbbbb
#finditer 返回的是一个迭代器,适合处理大量数据或当只需要部分匹配结果时。
res = pattern1.finditer(string)
for i in res:
    print(i)   #默认是整个匹配对象  i 是一个 Match 对象。这个对象包含了关于每一次匹配的所有信息。
    print(i.group())  #打印正则匹配的结果字符串   返回匹配到的文本。
    print(i.group(0))  #打印正则匹配的结果字符串   返回匹配到的文本。