u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
我需要的只是括号内的内容。
答案 0 :(得分:191)
如果您的问题真的很简单,那么您不需要正则表达式:
s[s.find("(")+1:s.find(")")]
答案 1 :(得分:46)
使用re.search(r'\((.*?)\)',s).group(1)
:
>>> import re
>>> s = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
>>> re.search(r'\((.*?)\)',s).group(1)
u"date='2/xc2/xb2',time='/case/test.png'"
答案 2 :(得分:27)
如果你想找到所有出现的事情:
Template.foo.rendered = function() {
Session.setDefault('highcharts', false);
if (Session.get('highcharts') === false){
if (Roles.userIsInRole(Meteor.user(), 'admin') === true && highcharts === false) {
$.getScript('/javascripts/highcharts.min.js', function(){
Session.set('highcharts', true);
);
}
}
}
};
Template.fooBar.rendered = function() {
Session.setDefault('highcharts', false);
if (Session.get('highcharts') === false) {
if(Roles.userIsInRole(Meteor.user(), 'admin') === true && highcharts === false){
$.getScript('/javascripts/highcharts.min.js', function(){
Session.set('highcharts', true);
);
}
}
}
};
答案 3 :(得分:18)
基于tkerwin的回答,如果您碰巧有嵌套的括号,如
st = "sum((a+b)/(c+d))"
如果您需要在 第一个左括号和 最后右括号>之间取得所有内容,那么他的答案将无效strong>获取(a+b)/(c+d)
,因为从字符串的左侧查找搜索,并在第一个右括号处停止。
要解决此问题,您需要在操作的第二部分使用rfind
,因此它将成为
st[st.find("(")+1:st.rfind(")")]
答案 4 :(得分:6)
import re
fancy = u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
print re.compile( "\((.*)\)" ).search( fancy ).group( 1 )
答案 5 :(得分:4)
contents_re = re.match(r'[^\(]*\((?P<contents>[^\(]+)\)', data)
if contents_re:
print(contents_re.groupdict()['contents'])
答案 6 :(得分:0)
无需使用正则表达式...。 只需使用列表切片...
import pandas as pd
years = [2000,2001,2002]
# Read all CSV files
dfs = [pd.read_csv(f"newyork{year}.txt", header=None) for year in years]
# Insert column in the beginning
for i, df in enumerate(dfs):
df.insert(0, 'year', years[i])
# Concatenate all
df = pd.concat(dfs)