Python正则表达式怎么区配引号之间的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python正则表达式怎么区配引号之间的内容相关的知识,希望对你有一定的参考价值。

text = '你好, Python!'要区配引号之间的内容(内容中可能包含中\英文和一些符号),正则能不能做到?这个表达式该怎么写?解决后大肉伺候

正则表达式中匹配引号可以直接写入 ";

匹配任意内容,可以用.*表示,.表示为任意字符,*表示为任意长度;

进一步可以使用圆括号提取引号之间的内容。

示例代码如下:

import re

pattern = 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"

【讨论】:

with paste0("\"",unlist(strsplit(x,'\"',perl=T))[2],"\"") 以获得所需的结果...(在 OP 的问题后检查 cmets)

以上是关于Python正则表达式怎么区配引号之间的内容的主要内容,如果未能解决你的问题,请参考以下文章

php用正则表达式怎么取双引号里面的内容??

Python正则表达式获取引号之间的字符串

R正则表达式:隔离引号之间的字符串

如果此类字符串在Javascript中包含逗号,则正则表达式获取引号之间的文字字符串的内容

php 正则表达式 匹配网站内容

正则表达式拆分字符串,不包括可转义引号之间的分隔符