怎么写提取两个字符之间的字符串(正则表达式)

我写的正则表达式是提取双引号中的字符串,如下:\".+\" ,但是提取出来的字符串包含了这个双引号在里面,请问我怎么将双引号去掉?

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、鼠标在其它单元格点下,完成上面的操作。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-22
可以这样写,不好意思,刚才多打了个感叹号
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
第2个回答  2019-05-28
可以这样写,不好意思,刚才多打了个感叹号
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号
不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"
第3个回答  2013-06-15
可以这样写,不好意思,刚才多打了个感叹号
(?<=\").+(?=\")
这样匹配出来的正则表达式不包括前后引号

不过我觉得在加号后面要加个问号,当然得看具体情况了
(?<=\").+?(?=\")
直接加个圆括号,提取正则表达式的第一组数据不行吗?
\"(.+)\"追问

\"(.+)\"加上小括号不起作用啊,提取的字符串还是包含了双引号。

再问一下,我是用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变量为要从中提取的字符串


没见过写正则要这么复杂的语言,估计也没几个人会学

本回答被提问者采纳
相似回答