获取字符串之间的文字,如[u' $ 649.99']

时间:2015-10-13 21:24:56

标签: python regex

我有一个python字符串,如下所示:

[u'$649.99']

我想使用正则表达式来提取$649.99

正则表达式应该查看最远的'],以确保文本不会被意外删除。

我希望$649.99

6 个答案:

答案 0 :(得分:4)

你不需要正则表达式。

>>> import ast
>>> s = "[u'$649.99']"
>>> ast.literal_eval(s)
['$649.99']
>>> ast.literal_eval(s)[0]
'$649.99'

答案 1 :(得分:0)

你的正则表达式看起来像

$

\.后跟0或更多位数,然后转换为小数TableViewDataSource <Model:ManagedObject, Cell: UITableViewCell where Model:ManagedObjectType, Cell:ConfigurableCell>: NSObject,UITableViewDataSource 以使其成为字面值,后跟两位数字,位于字符串的末尾。这是demo

答案 2 :(得分:0)

我想你想要的只是:

/'(.*)'/

这是引号之间的所有内容。

答案 3 :(得分:0)

一个简单的解决方案是

regex = re.compile(r"\[u'(.*)'\]")
result = regex.match("[u'$649.99']").group(0)

请注意,这只有在被破坏成字符串表示形式的unicode字符串不包含特殊字符'\时才有效。

如果可能是这种情况,那么像ast.literal_eval()这样的Python文字解析器将是获取字符串表示内容的更好方法。

答案 4 :(得分:0)

正如所建议的那样,你真的不需要Regex。您可以使用str() functino将列表中的unicode字符串转换为普通字符串:

a = "[u'$649.99']" 
str(eval(a)[0])

但是如果你想要Regex,那就可以了。

r'\$\d{1,3}\.\d{1,2}'

答案 5 :(得分:0)

使用此解决方案,您无需导入任何内容:

>>> s = "[u'$649.99']"
>>> s.split("'")[1]
'$649.99'