首页 > 试题广场 >

下列程序打印结果为( ) impo...

[单选题]
下列程序打印结果为()
import re 
str1 = "Python's features" 
str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I)
print str2.group(1)


  • Python
  • Pyth
  • thon’s
  • Python‘s features
re模块实现正则的功能 
re.match(正则表达式,要匹配的字符串,[匹配模式])

要匹配的字符串为str1 = "Python's features" 

正则表达式r'(.*)on(.*?) .*'
r表示后面的字符串是一个普通字符串(比如\n会译为\和n,而不是换行符)
()符号包住的数据为要提取的数据,通常与.group()函数连用。
.匹配单个任意字符
*匹配前一个字符出现0次或无限次
?匹配前一个字符出现0次或1次
(.*)提取的数据为str1字符串中on左边的所有字符,即Pyth
(.*?)提取的数据为str1中on右边,空格前面,即's

.group(0)输出的是匹配正则表达式整体结果
.group(1) 列出第一个括号匹配部分,.group(2) 列出第二个括号匹配部分
发表于 2020-03-08 23:26:21 回复(11)

多个标志可以通过按位 OR(|) 来指定
re.M:多行匹配,影响 ^ 和 $
re.I使匹配对大小写不敏感
分组:即用圆括号将要提取的数据包住,通过 .group()获取,一般和“|”结合使用
re.match( r'(.*)on(.*?) .*', str1, re.M|re.I),将on左边和右边分组
>>print(str2.group(0))
Python's features
>>print(str2.group(1))
Pyth
>>print(str2.group(2))
's
参考:https://blog.csdn.net/liyahui_3163/article/details/78434157
https://www.cnblogs.com/feifeifeisir/p/10627474.html


发表于 2019-08-14 00:33:04 回复(5)
str1 = "Python's features"
r'(.*)on(.*?) .*'
有几个()就有几个group
group(0) = group() = Python's features
第一个()=group(1)
第二个()=group(2)
.*适配所有
?到后面的空格为止
发表于 2019-11-09 15:01:42 回复(1)
re模块实现正则的功能  
re.match(正则表达式,要匹配的字符串,[匹配模式]) 

要匹配的字符串为str1 = "Python's features" 

正则表达式r'(.*)on(.*?) .*'
r表示后面的字符串是一个普通字符串(比如\n会译为\和n,而不是换行符)
()符号包住的数据为要提取的数据,通常与.group()函数连用。
.匹配单个任意字符
*匹配前一个字符出现0次或无限次
?匹配前一个字符出现0次或1次
(.*)提取的数据为str1字符串中on左边的所有字符,即Pyth
(.*?)提取的数据为str1中on右边,空格前面,即's

re.M:多行匹配,影响 ^ 和 $
re.I:使匹配对大小写不敏感
|:or

.group(0)输出的是匹配正则表达式整体结果
.group(1) 列出第一个括号匹配部分, Pyth        ->pyth
.group(2) 列出第二个括号匹配部分  ‘s
发表于 2020-03-22 12:24:08 回复(3)
import re 
str1 = "Python's features" 
str2 = re.match( r'(.*)on(.*?)r.*', str1, re.M|re.I)
print (str2.group(0))
print (str2.group(1))
print (str2.group(2))
Python's features
Pyth
's featu
re即regular,正则模块
re.match(正则表达式,要匹配的字符串,[匹配模式])
多个标志可以通过按位 OR(|) 来指定
re.M:多行匹配,影响 ^ 和 $
re.I使匹配对大小写不敏感
关于正则表达式 r'(.*)on(.*?)r.*'
r指的是后面只是一个普通的字符串(比如\n会译为\和n,而不是换行符,re不能直接匹配换行符,匹配数字等需要对照特定的正则表达式)
待匹配字符串:str1 = "Python's features" 
()包住的数据为要提取的数据
. 匹配任意字符
* 表示匹配前面的出现0次或无数次
?表示匹配前面的出现0次或1次
import re 
str1 = "Python'sonononononon features" 
str2 = re.match( r'(.*?)on(.*?) .*', str1, re.M|re.I)
print (str2.group(1))
print (str2.group(2))
Pyth
'sonononononon
import re 
str1 = "Python'sonononononon features" 
str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I)
print (str2.group(1))
print (str2.group(2))
Python'sononononon
原题目:
(.*)提取的数据为str1字符串中on左边的所有字符,即Pyth
(.*?)提取的数据为str1中on右边,空格前面,即's
.group(0)输出的是匹配正则表达式整体结果
.group(1) 列出第一个括号匹配部分,.group(2) 列出第二个括号匹配部分


编辑于 2022-03-10 22:13:34 回复(0)
看不懂这段代码
发表于 2020-11-25 09:57:12 回复(0)
第一个为group1,这里需要注意,并不是跟列表等一样都是由0开始
发表于 2019-11-28 08:50:41 回复(0)
补充一点,其他的看王皮球大佬的解释即可,
re.match(strs),当中第一个参数字符串,re.match()方法是匹配字符串开头第一个单词的内容,如果匹配不到返回None
发表于 2022-05-11 16:31:16 回复(0)
作出解释:
r表示后面的字符串是一个普通字符串(比如\n会译为\和n,而不是换行符)
()符号包住的数据为要提取的数据,通常与.group()函数连用。
.匹配单个任意字符
*匹配前一个字符出现0次或无限次
?匹配前一个字符出现0次或1次
(.*)提取的数据为str1字符串中on左边的所有字符,即Pyth
(.*?)提取的数据为str1中on右边,空格前面,即's

.group(0)输出的是匹配正则表达式整体结果
.group(1) 列出第一个括号匹配部分,.group(2) 列出第二个括号匹配部分
发表于 2022-05-11 15:42:04 回复(0)
re模块实现正则的功能  re.match(正则表达式,要匹配的字符串,[匹配模式]) 要匹配的字符串 为str1 = "Python's features"  正则表达式r'(.*)on(.*?) .*' r表示后面的字符串是一个普通字符串(比如\n会译为\和n,而不是换行符) ()符号包住的数据为要提取的数据,通常与.group()函数连用。 .匹配单个任意字符 *匹配前一个字符出现0次或无限次 ?匹配前一个字符出现0次或1次 (.*)提取的数据为str1字符串中on左边的所有字符,即Pyth (.*?)提取的数据为str1中on右边,空格前面,即's .group(0)输出的是匹配正则表达式整体结果 .group(1) 列出第一个括号匹配部分, .group(2) 列出第二个括号匹配部分 多个标志可以通过按位 OR(|) 来指定 re.M:多行匹配,影响 ^ 和 $ re.I:使匹配对大小写不敏感 分组:即用圆括号将要提取的数据包住,通过 .group()获取,一般和“|”结合使用 re.match( r'(.*)on(.*?) .*', str1, re.M|re.I),将on左边和右边分组 >>print(str2.group(0)) Python's features >>print(str2.group(1)) Pyth >>print(str2.group(2)) 's 参考:https://blog.csdn.net/liyahui_3163/article/details/78434157 https://www.cnblogs.com/feifeifeisir/p/10627474.html 到空格中断,所以只匹配空格前面的。
编辑于 2021-05-05 23:50:28 回复(0)
r'(.*)on(.*?) .*'     r'(.*)on(.*?)后面这.*有啥用????
发表于 2020-08-26 14:51:05 回复(0)
多个标志可以通过按位 OR(|) 来指定 re.M:多行匹配,影响 ^ 和 $ re.I:使匹配对大小写不敏感 分组:即用圆括号将要提取的数据包住,通过 .group()获取,一般和“|”结合使用 re.match( r'(.*)on(.*?) .*', str1, re.M|re.I),将on左边和右边分组 >>print(str2.group(0)) Python's features >>print(str2.group(1)) Pyth >>print(str2.group(2)) 's
发表于 2019-10-04 01:53:33 回复(0)
Hmk头像 Hmk
我看了其实评论讲的.*? 不是很详细,尽量少的匹配 比如aabab 使用a.*b 以a开始 b结束 匹配aba 同理 on(.*?) 空格 on开始 空格结束 匹配's
发表于 2023-05-09 23:55:00 回复(0)
救!正则看不懂😭
发表于 2022-03-07 23:32:29 回复(0)
<p>简单粗暴,有 on 的选项都错</p>
发表于 2020-11-05 21:57:59 回复(0)
str2 = re.match( r'(.*)on(.*?)空格.*',   记住这里有个空格,所以识别到空格会停止
编辑于 2024-04-13 23:17:06 回复(0)
  • 匹配应该不区分大小写(re.I)。
  • 表达式应该在多行模式下运行(re.M)。
发表于 2024-03-27 17:02:37 回复(0)
正则表达式我从开发到现在一直不记得 7年了啊。。 不用怎么会记得啊
编辑于 2023-12-21 20:48:21 回复(0)
import re 
str1 = "Python's features" 
str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I)
print str2.group(1)


首先解释下:
re.match  从字符串的开头往后匹配,找到则返回match对象, 找不到则返回None. 
re.search  顾名思义,从整个字符串中"搜寻"目标,找到则返回match对象, 找不到则返回None. 
二者的返回对象均可以调用group方法返回匹配结果, 由于题目中有分组,且分组编号是从1开始, 也就是取第一个分组的值,那么答案呼之欲出, 即: Pyth
发表于 2023-08-25 11:13:14 回复(0)
关于(.*?)这个部分还隐藏着一个重要知识点。 i. ?: 告诉引擎匹配前导字符0次或一次。事实上是表示前导字符是可选的。 ii. +: 告诉引擎匹配前导字符1次或多次。 iii. *: 告诉引擎匹配前导字符0次或多次。 iv. {min, max}: 告诉引擎匹配前导字符min次到max次。min和max都是非负整数。如果有逗号而max被省略了,则表示max没有限制;如果逗号和max都被省略了,则表示重复min次。 默认情况下,这个几个特殊字符都是贪婪的,也就是说,它会根据前导字符去匹配尽可能多的内容。如果没有问号,会导致(.*)直接通到结尾。 在以上字符后加上一个问号(?)则可以开启懒惰模式,在该模式下,正则引擎尽可能少的重复匹配字符,匹配成功之后它会继续匹配剩余的字符串。也就是示例中的空格。 如果在以上四种表达式后加上一个加号(+),则会开启独占模式。同贪婪模式一样,独占模式一样会匹配最长。不过在独占模式下,正则表达式尽可能长地去匹配字符串,一旦匹配不成功就会结束匹配而不会回溯。 在以上字符后加上一个问号(?)则可以开启懒惰模式,在该模式下,正则引擎尽可能少的重复匹配字符,匹配成功之后它会继续匹配剩余的字符串
发表于 2023-02-19 09:27:52 回复(0)