我有一个像这样的字符串
sheet2.xml/xl/abc/workbook.xls/prest.ppt/download/images/sabbath.jpeg
我希望输出像这样
sheet.xml,xl/abc/workbook.xls,prest.ppt,download/images/sabbath.jpeg
我有一个正则表达式匹配唯一的' /'在.file扩展名之后,但不能用常量","
替换它们\b\.\w+(?=/)\b(/)
此正则表达式匹配" /"在每个文件扩展名后,但我如何用","
替换它有什么建议吗?
答案 0 :(得分:2)
如果你的正则表达式支持重置匹配,你可以在这里使用它!这是一个PCRE正则表达式:
\b\.\w+(?=\/)\b\K(\/)
^^
Here we reset the match
因此,只有最后一个/
会出现在匹配中,然后您可以将其替换为,
。
如果不支持\K
,请尝试以下操作:
(\b\.\w+(?=\/)\b)\/
并替换为
$1,
这里的技巧是将文件扩展名部分移动到组1.然后在替换中你可以说"组1和逗号"。
一个稍快的版本,由评论中的ctwheels建议:
(\b\.\w+)\/\b
答案 1 :(得分:0)
根据您的编程语言或您使用的工具,以下示例可能需要调整才能正常工作。
您必须匹配ts=$(date -d'01/06/1980 00:00:00' +%s)
lap=18
cat file |
while read tt
do
dt=`echo $tt | awk '{print $1}' | awk -F"/" '{print $2"/"$3"/"$1}'`
tm=`echo $tt | awk '{print substr($2,1,8)}'`
ms=`echo $tt | awk '{print $2}' | awk -F":" '{print $NF}'`
line=`echo $dt" " $tm`
echo $line\ $(date -d "${line/// }" "+%s") |
awk '{print (($3 - '$ts') + '$lap')'$ms'}'
done
内的扩展程序才能在以后