mat*_*ick 5 python regex string ksh
如何将字符串中的左边部分和右边部分剥离到匹配表达式,就像在ksh中一样?
例如:
${name##*/}
${name%/*}
Run Code Online (Sandbox Code Playgroud)
(有关ksh示例,请参阅http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html).
我似乎无法弄清楚使用re模块或字符串模块这样做的简单方法,但我必须遗漏一些东西.
克什:
\n\n$ s=\'abc/def/ghi\'\n$ echo ${s%%/*}\nabc\n$ echo ${s%/*}\nabc/def\n$ echo ${s#*/}\ndef/ghi\n$ echo ${s##*/}\nghi\nRun Code Online (Sandbox Code Playgroud)\n\nPython:
\n\n>>> s=\'abc/def/ghi\'\n>>> print s[:s.find("/")]\nabc\n>>> print s[:s.rfind("/")]\nabc/def\n>>> print s[s.find("/")+1:]\ndef/ghi\n>>> print s[s.rfind("/")+1:]\nghi\nRun Code Online (Sandbox Code Playgroud)\n\n编辑:
\n\n要处理模式丢失的情况,如\xce\xa4\xce\x96\xce\xa9\xce\xa4\xce\x96\xce\x99\xce\x9f\xce\xa5 所指出的:
\n\n>>> s=\'abc/def/ghi\'\n>>> t=\'no slash here\'\n>>> print s[:s.find("/") % (len(s) + 1)]\nabc\n>>> print t[:t.find("/") % (len(t) + 1)]\nno slash here\n>>> print s[:s.rfind("/") % (len(s) + 1)]\nabc/def\n>>> print t[:t.rfind("/") % (len(t) + 1)]\nno slash here\n>>> print s[s.find("/")+1:]\ndef/ghi\n>>> print t[t.find("/")+1:]\nno slash here\n>>> print s[s.rfind("/")+1:]\nghi\n>>> print t[t.rfind("/")+1:]\nno slash here\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |