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)