【问题标题】:Python regex remove all before a certain pointPython 正则表达式在某个点之前删除所有内容
【发布时间】:2013-05-20 18:37:41
【问题描述】:

假设我有一个字符串:

F:\\Somefolder [2011 - 2012]\somefile

我想使用正则表达式删除之前的所有内容:somefile

所以我得到的字符串是:

somefile

我试图查看正则表达式表,但我似乎无法理解。 任何帮助都很棒。

【问题讨论】:

  • 您是否要解析文件名?还是这只是一个通用示例?
  • 这只是一个例子。我想从斜杠之前的字符串中删除所有内容,包括斜杠。
  • 看来这是os.path.basename 的工作...

标签: python regex string


【解决方案1】:

不知道为什么要在这里使用正则表达式...

your_string.rpartition('\\')[-1]

【讨论】:

  • 看起来这是最简单的方法。它就像一个魅力。我对 Python 还不是很熟悉。仍然在学习。这真的很有帮助。不知道我可以使用正则表达式以外的东西。但现在我知道了! :)
【解决方案2】:

如果你想要某个字符右边的部分,你不需要正则表达式:

f = r"F:\Somefolder [2011 - 2012]\somefile" 
print f.rsplit("\\", 1)[-1]
#  somefile

【讨论】:

    【解决方案3】:

    我已经明白了,就像您想在某个点词之前删除部分字符串(在您的示例中为“somefile”)

    >> a = 'F:\\Somefolder [2011 - 2012]\somefile'
    >> point = 'somefile'
    >> print a[a.index(point):]
    somefile
    

    【讨论】:

      【解决方案4】:

      这个小家伙呢?

      [^\\]+$
      

      ...在行动中...

      myStr = "F:\Somefolder [2011 - 2012]\somefile"
      result = re.match( r'[^\\]+$', myStr, re.M|re.I)
      if result:
         print result.group(0)
      else:
         print "No match!!"
      

      改编自:http://www.tutorialspoint.com/python/python_reg_expressions.htm

      Python 正则表达式测试器:http://www.regexplanet.com/advanced/python/index.html

      【讨论】:

        【解决方案5】:
        from typing import Iterable
        
        def remove_all_before(items: list, border: int) -> Iterable:
            return items[items.index(border):] if border in items else items
        
        print(remove_all_before((1,2,3,4,5,6), 3))
        

        【讨论】:

        • 如果您 edit 您的答案并添加关于您的代码如何回答问题的解释,这将使您的答案对其他人更有价值,并且更有可能被投票。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        • 1970-01-01
        • 2017-08-24
        • 1970-01-01
        • 2016-04-30
        相关资源
        最近更新 更多