假设一个字符串:
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'
我的正则表达式模式有什么问题?
答案 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分隔符不匹配。请查看下面的演示以获取更多信息。
答案 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
正是您正在寻找的。它是一个代表单个字符的通配符(与你的中间点字符无关;这只是巧合)。
.