我正在尝试理解模式匹配,并且对下面的代码非常不满。从我可以告诉它检查,看看在发送结束时是否有一大块2-5大写字母。然后它用''替换用数字分隔的块。和资本小写的资本小写由''
我真的不认为我理解了什么......我如何破译re.sub线?
我认为re.split是基于分隔符发送的分裂。是指通配符?
有人能给我看一个说明性的例子吗?
import re
x=0
y=[]
while x<100:
sent = raw_input("gimmie a sentence")
if re.search('[A-Z]{2,5}$', sent):
print("HERE")
sent = re.sub('[0-9]+\.[0-9]+','<PAT1>', sent)
print(sent)
sent = re.sub(' [A-Z][a-z]+ [A-Z][a-z]+ [^A-Z]', '<PAT2>', sent)
print(sent)
y+=re.split('<PAT.>', sent)
x+= 1
print(x)
print(y)
print y
答案 0 :(得分:1)
上述问题中re
的说明 -
[A-Z]{2,5}$
选项:不区分大小写;确切间距;点不匹配换行符; ^ $不匹配的换行符;只有正则表达式语法
[A-Z]{2,5}
{2,5}
$
[0-9]+\.[0-9]+
选项:不区分大小写;确切间距;点不匹配换行符; ^ $不匹配的换行符;只有正则表达式语法
[0-9]+
之间范围内的单个字符
+
\.
[0-9]+
之间范围内的单个字符
+
[A-Z][a-z]+ [A-Z][a-z]+ [^A-Z]
选项:不区分大小写;确切间距;点不匹配换行符; ^ $不匹配的换行符;只有正则表达式语法
[A-Z]
[a-z]+
+
[A-Z]
[a-z]+
+
[^A-Z]
re.sub('[0-9] +。[0-9] +','',已发送)
正如文档所述,re.sub
的一般格式如下
re.sub(pattern, repl, string, count=0, flags=0)
实施例 -
>>> re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',r'static PyObject*\npy_\1(void)\n{','def myfunc():')
它会返回
'static PyObject*\npy_myfunc(void)\n{'
\1
抓取group 1
即([a-zA-Z_][a-zA-Z_0-9]*)