【问题标题】:Python 3 find a string between two pointsPython 3 在两点之间找到一个字符串
【发布时间】:2016-03-28 05:18:16
【问题描述】:

我在 py2.7 中可以正常工作,但是现在无法通过更改正则表达式使其在 py3 中正常工作

我只想要从文件名返回的字符串“voltaire

gpxFileName = '235235voltaire.gpx'
m=re.search('(?<=[0-9]).*?(?=.gpx)',gpxFileName)
print (m.group(1))

上面的代码成功地修剪掉了.gpx,但是数字仍然保留在:(

我已经被困在这个问题上太久了,它杀死了我。我错过了什么??

顺便说一句,我也试过了

m=re.search('(?<=[0-9])\w+',gpxFileName)

m=re.search('(?<=\d).*(?=.gpx)',gpxFileName)

【问题讨论】:

    标签: python regex python-3.x search


    【解决方案1】:

    你需要使用capturing groups:

    >>> import re
    >>> s = '235235voltaire.gpx'
    >>> re.search(r'\d+(\w+)\.gpx', s).group(1)
    'voltaire'
    

    这里我们在一个或多个数字之后和.gpx 之前提取一个或多个字母数字字符(点必须被转义,因为它具有特殊含义)。

    【讨论】:

    • 你是一个绝对的传奇!谢谢。所以我也学了,你说的捕获是什么意思?
    • @user2206361 谢谢,斜体只是为了强调。
    • 好吧,我知道点有特殊含义,但 (?=.gpx) 是成功工作的部分——它是没有被删减的数字。哦,你能解释一下......我猜'+'的意思是任何长度......对吗?
    • @user2206361 + 表示“一个或多个”。如果您想使用后视和前瞻检查,这里有一个示例表达式,可以提取 voltaire(?&lt;=\d{6})(\w+)(?=\.gpx)
    • 太棒了。清晰且内容丰富。谢谢,节日快乐!
    猜你喜欢
    • 2018-11-21
    • 2020-06-03
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2010-10-25
    • 2017-07-07
    相关资源
    最近更新 更多