Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找括号和单引号内的子字符串_Python_Regex_String - Fatal编程技术网

Python 查找括号和单引号内的子字符串

Python 查找括号和单引号内的子字符串,python,regex,string,Python,Regex,String,我想获取括号内和'内的字符串 这个街区很好用。但是没有更优雅的方法吗?如果行中只有一对括号,那么不需要正则表达式也可以: a_string=“_TableStyle('Table Grid')id:219287880” Open圆括号=字符串索引(“(”)+2 闭括号=字符串索引(“'),开括号) #“表格网格” 字符串[开括号:闭括号] 是。还有另一种方法可以实现这一点。在这里 import re a_string = "_TableStyle('Table Grid') id: 2

我想获取括号内和
'
内的字符串


这个街区很好用。但是没有更优雅的方法吗?

如果行中只有一对括号,那么不需要正则表达式也可以:

a_string=“_TableStyle('Table Grid')id:219287880”
Open圆括号=字符串索引(“(”)+2
闭括号=字符串索引(“'),开括号)
#“表格网格”
字符串[开括号:闭括号]

是。还有另一种方法可以实现这一点。在这里

import re
a_string = "_TableStyle('Table Grid') id: 219287880"
result = re.findall(r'\(\'(.*?) *\'\)', a_string)[0]
print(result)
此代码还搜索“”并仅提取(“”)之间的文本

编辑:

我们也可以这样写代码

import re
a_string = "_TableStyle('Table Grid') id: 219287880"
result = re.search(r'\(\'(.*?) *\'\)', a_string).group(1)
print(result)

只检索第一个匹配项效率很低,最好使用在找到第一个匹配项后返回的匹配项。还可以将正则表达式简化为

代码:

重新导入
...
result=re.search(r“\”(.+?)“\”),一个字符串。组(1)

如果不想转义单引号,请在文本周围使用双引号。三重引号甚至更好。获取正则表达式匹配的一部分很简单,方法如下:

重新导入
a_string=“_TableStyle('Table Grid')id:219287880”
match=re.search(r”“”\(“([^']*)”\)“”,一个字符串)
如果匹配:
打印(匹配组(1))

解释

--------------------------------------------------------------------------------
\(                       '('
--------------------------------------------------------------------------------
'                        '\''
--------------------------------------------------------------------------------
(组和捕获到\1:
--------------------------------------------------------------------------------
[^']*除:“”(0或更多)以外的任何字符
次数(与最大金额匹配)
(可能的)
--------------------------------------------------------------------------------
)结束\1
--------------------------------------------------------------------------------
'                        '\''
--------------------------------------------------------------------------------
\)                       ')'

优雅的定义是什么?你所说的更优雅的方式是什么意思?获取括号之间的值还是获取列表的第一个值
re.search(r“\(“(.+?)”\”,一个u字符串)。group(1)
为什么不在正则表达式中包含单引号?如果字符串中只有一个('and')实例,则可以将字符串拆分为分隔符并获取中间元素,但它们需要
表格网格
,而不是
表格网格
@mkrieger1,代码是相同的,他只需要找到
('
import re
a_string = "_TableStyle('Table Grid') id: 219287880"
result = re.search(r'\(\'(.*?) *\'\)', a_string).group(1)
print(result)