我有以下字符串:
str1 = "I am doing 'very well' for your info"
我希望在单引号之间提取部分,即 非常好
我该如何设置正则表达式?
我尝试了以下但显然会给出错误的结果
import re
pt = re.compile(r'\'*\'')
m = pt.findall(str1)
由于
答案 0 :(得分:4)
您可以使用re.findall
在单引号之间捕获组:
import re
str1 = "I am doing 'very well' for your info"
data = re.findall("'(.*?)'", str1)[0]
输出:
'very well'
答案 1 :(得分:3)
使用re.findall
解决问题的另一种方法:查找以引号开头和结尾但不包含引号的所有序列。
re.findall("'([^']*)'", str1)
答案 2 :(得分:2)
您需要在转义的单引号之间放置一个单词字符和空格。
import re
pt = re.compile(r"'([\w ]*'")
m = pt.findall(str1)
答案 3 :(得分:2)
您的案例使用完全必要的正则表达式吗?它经常是,但有时正则表达式只会简化简单的字符串操作。
如果没有,您可以使用Python的本机Split函数将字符串拆分为使用'
作为分隔符的列表,并访问它创建的数组部分。
str1 = "I am doing 'very well' for your info"
str2 = str1.split("'")
print(str2[1]) # should print: very well
答案 4 :(得分:0)
试试这个
import re
pattern=r"'(\w.+)?'"
str1 = "I am doing 'very well' for your info"
print(re.findall(pattern,str1))
输出:
['very well']