我有一个python字符串,如下所示:
[u'$649.99']
我想使用正则表达式来提取$649.99
。
正则表达式应该查看最远的']
,以确保文本不会被意外删除。
我希望$649.99
。
答案 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'