![]() |
1
2
您可能想要启用DOTALL标志,或者想要使用
或:
这些将给你不同的结果,但两者都应该给你匹配。(查看您想要的类型。) 顺便说一句:你似乎把编码文本(字节)和解码文本(字符)搞混了。这并不少见,尤其是在3.x之前的Python中。特别是,这是非常可疑的:
你是 判定元件 -使用ISO-8859-2编码,而不是 -编码,所以称这个变量为“decoded”。(为什么不“ISO_8859_2_decoded”?因为ISO_8859_2是一种编码。解码的字符串不再有编码。) 代码的其余部分尝试在rawdata和UTF_8_编码(两种编码字符串)上进行匹配,而它可能应该使用解码的unicode字符串。 |
![]() |
3
0
对于默认标志设置,.*与换行符不匹配。“取消订阅”仅在第一行换行后出现一次。Adobe出现在第一个换行符之前。你可以通过使用re.DOTALL来解决这个问题。 不过,您还没有检查Adobe match的性能:它有1478字节宽!打开re.DOTALL,它(以及相应的取消订阅模式)将匹配整个文本!! 你肯定要输掉这场比赛,因为你不感兴趣,这会拖慢比赛。此外,还应丢失前导。*,并使用search()而不是match()。
为什么要将数据转换成UTF-8并在上面搜索?就这样离开吧。
还有人指出,一般来说,你需要解码
|
![]() |
4
0
你的问题是关于正则表达式的,但是没有正则表达式你的问题是可以解决的;而是使用标准字符串
如果没有其他内容,上面展示了如何处理编码:只需解码为unicode字符串并使用它即可。但是请注意,这只适用于只有一个或很少数量的替换(这些替换不是基于模式的),因为
对于基于字符串和基于模式的替换,您可以执行类似的操作,一次执行多个替换:
|
![]() |
DotFX · RegEx捕获关键字前但括号后的所有内容 4 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 4 月前 |
![]() |
iato · 确保正则表达式不从命名材料中的数字中提取 5 月前 |
![]() |
vr8ce · 非成对标记中特定字符的正则表达式 5 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 5 月前 |
![]() |
Carsten · 使用最近的搜索模式更改文本块 5 月前 |