怎么写提取两个字符之间的字符串(正则表达式)
我写的正则表达式是提取双引号中的字符串,如下:\".+\",但是提取出来的字符串包含了这个双引号在里面,请问我怎么将双引号去掉?...
我写的正则表达式是提取双引号中的字符串,如下:\".+\" ,但是提取出来的字符串包含了这个双引号在里面,请问我怎么将双引号去掉?
展开
4个回答
展开全部
1、这里要运用到MID函数以及LEFT函数,在B1单元格输入:=MID(A1,FIND("共",A1)+1,FIND(",",A1)-1-FIND("共",A1))
2、公式解释:如下图所示的,MID是截取字符函数,里内的参数,第1个:A1,是要截取字符所在单元格。第2个,FIND("共",A1)+1是所截取的字符开始的位数,用FIND找出”共“的所在字符串的位数,再加上1;那么,从表格中数据可以知道,”共“所在位数再加”1“位,就是”共“右边的数字了。
3、第3个,FIND(",",A1)-1-FIND("共",A1)是MID函数需要截取的字符个数,由FIND函数找出","所在位数减去1位后再减去由FIND函数找出"共"所在位数,就是需要截取的字符个数。
4、B1单元格输入公式后,按下回车键,得出结果”2860元“。
5、鼠标在B1单元格点下,再放在单元格右下角的绿色小方框上。
6、然后,鼠标左键双击,下方单元格即相应各自得出结果。
7、鼠标在其它单元格点下,完成上面的操作。
展开全部
可以这样写,不好意思,刚才多打了个感叹号
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以这样写,不好意思,刚才多打了个感叹号
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以这样写,不好意思,刚才多打了个感叹号
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
追问
\"(.+)\"加上小括号不起作用啊,提取的字符串还是包含了双引号。
再问一下,我是用google go 语言(和c语言差不多的,用正则表达式的程序执行效率会不会比较低?
追答
package main
import(
"fmt"
"regexp"
)
var myExp=regexp.MustCompile("\"(?P<first>.+)\"")
func main(){
str:="this is a \"test\""
match:=myExp.FindStringSubmatch(str)
mmap:=make(map[string]string)
for i,name:=range myExp.SubexpNames(){
if name=="first"{
mmap[name]=match[i]
}
}
fmt.Println(mmap["first"])
}
上面的GO程序打印出\".+\"这个正则匹配的字符串去掉双引号后的结果,main函数中的str变量为要从中提取的字符串
没见过写正则要这么复杂的语言,估计也没几个人会学
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询