我有以下文字:
s1 = 'Promo Tier 77 (4.89 USD)'
s2 = 'Promo (11.50 USD) Tier 1 Titles Only'
从这里,我想把括号里没有的数字取出来。它将是:
s1 --> '77'
s2 --> '1'
我目前正在使用弱正则表达式re.findall('\s\d+\s',s1)
。什么是正确的正则表达式?类似于re.findall('\d+',s1)
但不包括插入语中的任何内容。你知道吗
>>> re.findall('\d+',s1)
['77', '4', '89'] # two of these numbers are within the parenthetical.
# I only want '77'
可以创建一个删除了括号部分的临时字符串,然后运行代码。我使用了一个空格,这样丢失的字符串部分前后的数字就不能连接起来了。你知道吗
你当然可以把它缩短成一行。你知道吗
我发现有用的一种方法是,在上下文中使用alternation操作符,将要排除的内容放在左侧,(说扔掉这个,这是垃圾),并将要匹配的内容放在右侧的捕获组中。你知道吗
然后可以将其与^{} 结合使用,或者使用列表理解来删除正则表达式引擎从alternation操作符左侧的表达式中提取的空列表项。你知道吗
把你的琴弦劈开。eg伪码
相关问题 更多 >
编程相关推荐