【问题标题】:How to split strings with regex without first and last special character [duplicate]如何在没有第一个和最后一个特殊字符的情况下使用正则表达式拆分字符串[重复]
【发布时间】:2023-03-10 05:30:01
【问题描述】:

我在使用正则表达式时遇到问题。

所以基本上我有这种字符串:

string = '<bash><exit><bash-trap><terminology>'

我最后想要的是所有单独单词的列表: ['bash', 'exit', 'bash-trap', '术语']

到目前为止我做了什么:

substitution = re.sub(r'[^A-Za-z0-9-]+', ' ', string)

然后

re.split(r'[^A-Za-z0-9-])',substitution)

这给了我以下结果:

['', 'bash', 'exit', 'bash-trap', 'terminology', '']

谢谢!

【问题讨论】:

  • print(re.findall(r"\&lt;(.*?)\&gt;", string)) ?
  • 你的正则表达式还不错。您可以在您的第一个 re.sub 之后简单地调用 substitution.split()
  • 或者在split前加一个strip

标签: python regex


【解决方案1】:

您想要的只是尖括号内的单词列表。因此,您可以直接在输入字符串上使用re.findall

re.findall(r'<(.*?)>', string)

代码:

import re

string = '<bash><exit><bash-trap><terminology>'    
print(re.findall(r'<(.*?)>', string))
# ['bash', 'exit', 'bash-trap', 'terminology']

【讨论】:

    【解决方案2】:

    使用模式\&lt;(.*?)\&gt;

    例如:

    import re
    
    string = '<bash><exit><bash-trap><terminology>'
    print(re.findall(r"\<(.*?)\>", string))
    # --> ['bash', 'exit', 'bash-trap', 'terminology']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2018-09-22
      • 2015-05-05
      • 1970-01-01
      • 2018-08-11
      • 2019-04-01
      • 1970-01-01
      相关资源
      最近更新 更多