如何用正则表达式排除行中部分内容,提取不带引号的目标文本?
正则提取引号内内容的正确写法
方法一:用零宽断言直接匹配目标内容
正则表达式:(?<=Your name is: ").*?(?=")
这个写法通过正向预查(?<=Your name is: ")限定匹配前的固定文本,反向预查(?=")限定匹配后的双引号,中间的.*?会精准匹配引号内的Foo Bar,且不会包含双引号。方法二:捕获组配合非捕获组
正则表达式:(?:^Your name is: ")(.*)(?:")$
你之前的写法没成功是因为没取捕获组的内容——这个正则里的(.*)是捕获组,提取时直接取第一个捕获组(比如用$1或\1)就能得到Foo Bar,非捕获组只是用来限定匹配范围,不会被提取。
另外,你之前用的"(.*?)"也可以用,只要提取捕获组$1的内容,就能去掉双引号。
内容的提问来源于stack exchange,提问作者sgdjs
相关产品推荐
相关产品推荐

