我得到了一个包含多行纯utf-8文本的文件。如下所示,按中文,是中文。
PROCESS:类型:关爱积分[NOTIFY] 交易号:2012022900000109 订单号:W12022910079166 交易金额:0.01元 交易状态:true 2012-2-29 10:13:08
文件本身以utf-8格式保存。文件名是xx.txt
这是我的python代码,env是python2.7
#coding: utf-8
import re
pattern = re.compile(r'交易金额:(\d+)元')
for line in open('xx.txt'):
match = pattern.match(line.decode('utf-8'))
if match:
print match.group()
这里有问题的是我没有结果。
我想从交易金额:0.01元
这里的十进制字符串中获得0.01
。
为什么此代码不起作用?谁能向我解释,我什么也没有。
您的代码有几个问题。首先,您应该使用re.compile(ur'<unicode string>')
。另外,添加re.UNICODE标志也很不错(尽管不确定此处是否确实需要)。下一个是您仍然不会收到匹配项,因为\d+
不能只处理一系列数字,\d+\.?\d+
而应该只处理小数(您需要数字,可能是点和数字)。示例代码:
#coding: utf-8
text = u"PROCESS:类型:关爱积分[NOTIFY] 交易号:2012022900000109 订单号:W12022910079166 交易金额:0.01元 交易状态:true 2012-2-29 10:13:08"
import re
pattern = re.compile(ur'交易金额:(\d+\.?\d+)元', re.UNICODE)
print pattern.search(text).group(1)
问题内容: 我正在使用Django的URLconf,我将收到的URL是 我想使用来匹配该URL ,但它不起作用。 然后我发现这是“?”的问题。 因为我尝试使用even 进行匹配,但都失败了,但是当它是“ +”或任何其他字符时,它可以工作。 如何匹配“?”,有什么特别之处吗? 问题答案: 你的网址内部不匹配的原因是因为?开始新的GET查询。 因此,URL的可匹配部分只能达到第一个“ aaa”。其余的
问题内容: 我需要从字符串“ بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ”中删除一些Unicode符号 我知道他们肯定在这里。我试过了: 但这不起作用。字符串保持不变。我究竟做错了什么? 问题答案: 您使用的是python 2.x还是3.0? 如果您使用的是2.x,请尝试使用“ u”使正则表达式字符串成为unicode-escape字符串。由于它是正则表达式,因此
本文向大家介绍常见的正则表达式问题,包括了常见的正则表达式问题的使用技巧和注意事项,需要的朋友参考一下 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。 关于^开始和$结束的问题注意 \b匹配一个单词边界, ?: ?= ?! 这四个不加^和$,其他都加^和$。 关于|的理解 1:/^a|zood$/
form control()validators . pattern()与此regex表达式有问题,用于验证1个字符、1个数字、最少8个字符、最多16个字符的密码。 通过验证程序的测试密码: asdfqwer//不应通过验证器 zxcvasdf//不应通过验证器 asdfqwer2 //这是正确的 不通过验证器的测试密码: 程序//这是正确的 在服务器端尝试这种模式或者使用在线regex测试平台都
当前情况暂且可以满足: 但若: 头)被截断了。如何修改呢? 字符串的格式:\d+\.(我希望这里是任意字符,但也可以削减范围)+ * 然后重复。
问题内容: 我有一个包含以下文本的字符串 我想将每个 孤立的 br 替换为 问题是我想避免将字符串转换为 我想做的是将字符串(使用replaceAll)转换为 我敢肯定这很简单,但是我的正则表达式不正确。 我的正则表达式 应该 找到“空白”,“ b”,“ r”,“空白”或“空白”,“ b”,“ r”,“行尾” 但是它错过了我字符串中的最后一个“ br” 我究竟做错了什么??TKS! 问题答案: 用