用`re.sub`修改字符串

时间:2018-01-02 05:23:20

标签: python regex

假设一个字符串:

s = 'F3·Compute·Introduction to Methematical Thinking.pdf'

我使用F3·Compute·

''替换为regex
In [23]: re.sub(r'F3?Compute?', '',s)
Out[23]: 'F3·Compute·Introduction to Methematical Thinking.pdf'

它无法按我的意图工作

尝试时,

In [21]: re.sub(r'F3·Compute·', '', 'F3·Compute·Introduction to Methematical Thinking.pdf')
Out[21]: 'Introduction to Methematical Thinking.pdf'

我的正则表达式模式有什么问题?

2 个答案:

答案 0 :(得分:-1)

使用点匹配任何单个字符:

#coding: utf-8
import re

s = 'F3·Compute·Introduction to Methematical Thinking.pdf'
output = re.sub(r'F3.Compute.', '', unicode(s,"utf-8"), flags=re.U)
print output

您的原始模式'F3?Compute?没有达到预期的效果。据说可以选择匹配F后跟数字3。此外,您已将e的{​​{1}}作为可选项。在任何情况下,您都没有考虑分隔符。

另请注意,我们必须匹配字符串的Compute版本,而不是字符串。如果不这样做,点将与您尝试定位的unicode分隔符不匹配。请查看下面的演示以获取更多信息。

Demo

答案 1 :(得分:-1)

问号namespace MyCompany { namespace MyModule { namespace MyModulePart //e.g. Input { namespace MySubModulePart { namespace ... { class MyClass; } } } } } // Here is where the magic happens class MyCompany::MyModule::MyModulePart::MySubModulePart::MyYouGetTheIdeaModule::MyClass { ... }; 不代表正则表达式中的单个字符。它表示上一个字符中的0或1,在您的情况下为?3。相反,e正是您正在寻找的。它是一个代表单个字符的通配符(与你的中间点字符无关;这只是巧合)。

.