理解python定界符中的正则表达式,
我正在努力理解模式匹配,下面的代码让我非常信服。据我所知,它会检查邮件末尾是否有大量2-5个大写字母。然后用“”替换由数字分隔的块,用“”替换大写字母小写的块 我真的不认为我了解什么。。。如何破译re.sub行 我认为re.split是根据文件所在的分隔符发送的。是通配符吗 有人能给我举个例子吗理解python定界符中的正则表达式,,python,regex,Python,Regex,我正在努力理解模式匹配,下面的代码让我非常信服。据我所知,它会检查邮件末尾是否有大量2-5个大写字母。然后用“”替换由数字分隔的块,用“”替换大写字母小写的块 我真的不认为我了解什么。。。如何破译re.sub行 我认为re.split是根据文件所在的分隔符发送的。是通配符吗 有人能给我举个例子吗 import re x=0 y=[] while x<100: sent = raw_input("gimmie a sentence")
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
重新导入
x=0
y=[]
而x对上述问题中的re
的解释-
[A-Z]{2,5}$
选项:不区分大小写;精确间距;点与换行符不匹配^$在换行时不匹配;仅限正则表达式语法
- 在“a”和“Z”之间匹配单个字符(不区分大小写)
[a-Z]{2,5}
- 在2到5次之间,尽可能多次,根据需要回馈(贪婪)
{2,5}
- 在字符串末尾或字符串末尾的换行符(如果有)之前断言位置(换行)
$
[0-9]+.[0-9]+
选项:不区分大小写;精确间距;点与换行符不匹配^$在换行时不匹配;仅限正则表达式语法
- 在“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]
[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
捕获了组1
,即([a-zA-Z_][a-zA-Z_0-9]*)
您只是没有完全理解正则表达式还是没有阅读re.sub
的文档?你似乎很好地理解了它的各个部分,所以我不确定问题出在哪里是好的复制/粘贴工作!!!我相信OP现在完全明白了。这看起来是直接从regex101复制的:)那么{2,5}中的5有什么意义呢?这不会给出与{2,3}相同的结果吗,因为两者在2个大写字符上仍然匹配?请参阅Op的摘录-它检查sent结尾是否有2-5个大写字母块
然后是{2,3}={2,5}??我试图通过一些真实的描述来解释正则表达式,只是因为OP需要它
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{'