Python正则表达式怎么区配引号之间的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python正则表达式怎么区配引号之间的内容相关的知识,希望对你有一定的参考价值。
text = '你好, Python!'要区配引号之间的内容(内容中可能包含中\英文和一些符号),正则能不能做到?这个表达式该怎么写?解决后大肉伺候
正则表达式中匹配引号可以直接写入 ";
匹配任意内容,可以用.*表示,.表示为任意字符,*表示为任意长度;
进一步可以使用圆括号提取引号之间的内容。
示例代码如下:
import repattern = re.compile('"(.*)"')
myStr = 'abcd"meelo"efg'
print pattern.findall(myStr)
# meelo 参考技术A 问得有点模糊,变量text就是一字符串,哪里来的引号?按照你问题的举例,引号是不属于text的。你是不是想问这样的 text='你说:"我爱你,python !"。' 这样匹配出 我爱你,python ! 很容易就能正则匹配它出来。
R正则表达式:隔离引号之间的字符串
【中文标题】R正则表达式:隔离引号之间的字符串【英文标题】:R regular expression: isolate a string between quotes 【发布时间】:2015-06-13 01:46:57 【问题描述】:我有一个字符串myFunction(arg1=\"hop\",arg2=TRUE)
。我想隔离引号之间的内容(本例中为\"hop\"
)
到目前为止我已经尝试过,但没有成功:
gsub(pattern="(myFunction)(\\(1))(.*)(\\\"1.*\\\"1)(.*)(\\)1)",replacement="//4",x="myFunction(arg1=\"hop\",arg2=TRUE)")
欢迎正则表达式大师的任何帮助!
【问题讨论】:
您需要\"hop\"
或hop
作为答案,因为描述在引号之间?
隔离是什么意思?您的预期输出是什么?
例如\"hop\"
【参考方案1】:
试试
sub('[^\"]+\"([^\"]+).*', '\\1', x)
#[1] "hop"
或者
sub('[^\"]+(\"[^\"]+.).*', '\\1', x)
#[1] "\"hop\""
不需要\"
,因为"
也可以使用
sub('[^"]*("[^"]*.).*', '\\1', x)
#[1] "\"hop\""
如果有多个匹配项,正如@AvinashRaj 在他的帖子中提到的那样,sub
可能没有那么有用。使用stringi
的选项是
library(stringi)
stri_extract_all_regex(x1, '"[^"]*"')[[1]]
#[1] "\"hop\"" "\"hop2\""
数据
x <- "myFunction(arg1=\"hop\",arg2=TRUE)"
x1 <- "myFunction(arg1=\"hop\",arg2=TRUE arg3=\"hop2\", arg4=TRUE)"
【讨论】:
非常感谢,这很好用。你能解释一下第一个解决方案的基本原理吗? @RockScience 第一个解决方案匹配所有不是\"
即[^\"]+
的字符,后跟一个\"
,然后使用捕获组(括号内)获取不是@ 的字符987654333@,使用\\1
提取捕获组。【参考方案2】:
您也可以使用regmatches
函数。 Sub 或 gsub 仅适用于特定输入,对于一般情况,您必须进行抓取而不是删除。
> x <- "myFunction(arg1=\"hop\",arg2=TRUE)"
> regmatches(x, gregexpr('"[^"]*"', x))[[1]]
[1] "\"hop\""
要仅获取引号内的文本,然后将上述函数的结果传递给有助于删除引号的 gsub 函数。
> x <- "myFunction(arg1=\"hop\",arg2=TRUE)"
> gsub('"', '', regmatches(x, gregexpr('"([^"]*)"', x))[[1]])
[1] "hop"
> x <- "myFunction(arg1=\"hop\",arg2=\"TRUE\")"
> gsub('"', '', regmatches(x, gregexpr('"([^"]*)"', x))[[1]])
[1] "hop" "TRUE"
【讨论】:
【参考方案3】:你可以试试:
str='myFunction(arg1=\"hop\",arg2=TRUE)'
gsub('.*(\\".*\\").*','\\1',str)
#[1] "\"hop\""
【讨论】:
【参考方案4】:x <- "myFunction(arg1=\"hop\",arg2=TRUE)"
unlist(strsplit(x,'"'))[2]
# [1] "hop"
【讨论】:
withpaste0("\"",unlist(strsplit(x,'\"',perl=T))[2],"\"")
以获得所需的结果...(在 OP 的问题后检查 cmets)以上是关于Python正则表达式怎么区配引号之间的内容的主要内容,如果未能解决你的问题,请参考以下文章