【问题标题】:Split by suffix with Python regular expression使用 Python 正则表达式按后缀拆分
【发布时间】:2015-10-01 00:56:31
【问题描述】:

我只想按后缀分割字符串。例如,我希望能够将dord word 拆分为[dor,wor]

虽然\wd 会搜索以d 结尾的单词。但是,这不会产生预期的结果

import re
re.split(r'\wd',"dord word")
['do', ' wo', '']

如何按后缀拆分?

【问题讨论】:

    标签: python regex split


    【解决方案1】:

    作为一种更好的方法,您可以使用re.findall 并使用r'\b(\w+)d\b' 作为您的正则表达式来查找d 之前的其余单词:

    >>> re.findall(r'\b(\w+)d\b',s)
    ['dor', 'wor']
    

    【讨论】:

      【解决方案2】:
      x='dord word'
      import re
      print re.split(r"d\b",x)
      

      print [i for i in re.split(r"d\b",x) if i] #if you dont want null strings.
      

      试试这个。

      【讨论】:

        【解决方案3】:

        由于\w 还可以捕获数字和下划线,我将使用[a-zA-Z] 字符类定义一个仅由字母组成的单词:

        print [x.group(1) for x in re.finditer(r"\b([a-zA-Z]+)d\b","dord word")]
        

        demo

        【讨论】:

          【解决方案4】:

          如果您想知道为什么原来的方法不起作用,

          re.split(r'\wd',"dord word")
          

          它会在“d”之前查找字母/数字/下划线的所有实例,并根据找到的内容进行拆分。所以它这样做了:

          做[rd] wo[rd]

          并拆分括号中的字符串,删除它们。

          还要注意,这可能会在单词中间分裂,所以:

          re.split(r'\wd', "said tendentious")
          

          会将第二个单词一分为二。

          【讨论】:

            猜你喜欢
            • 2012-04-20
            • 2020-09-08
            • 2022-01-25
            • 2021-10-07
            • 1970-01-01
            • 2011-06-29
            • 2021-03-06
            • 2013-04-26
            相关资源
            最近更新 更多