python - 理解Python中的正则表达式分隔符、sub、

标签 python regex

我试图理解模式匹配,但对下面的代码感到非常困惑。据我所知,它会检查发送的末尾是否有 2-5 个大写字母。然后它用 '' 替换由数字分隔的 block ,用 '' 替换大写小写的 block

我真的不认为我理解了什么...我如何破译 re.sub 行?

我认为 re.split 是根据 .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

最佳答案

上述问题中的re的解释-

[A-Z]{2,5}$

[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]+
    • 一次和无限次之间,尽可能多次,根据需要回馈(贪婪)+
  • 匹配字符“.”字面上的\.
  • 匹配“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]
  • 匹配“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]*)

关于python - 理解Python中的正则表达式分隔符、sub、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536452/

相关文章:

python - 如何让子类使用父类的默认值?

python - PyCharm 是否有任何时间跟踪工具?

c# - 获取字符串最后 3 个字符的正则表达式

c# - 如何获取Python脚本返回值以在Visual Studio表单中使用?

python - Pandas:使用日期列表和 DateTimeIndex 访问数据

python - 导入错误: No module named http in odoo

javascript - 通过正则表达式 javascript 拆分字符串

javascript - url 的正则表达式一些问题

java - 如何使用 Java 正则表达式解析骰子符号?

php - 用元素替换每个字符