Python 正则表达式,用于在值可能有或没有引号时拆分由等号分隔的键/值对

标签 python regex string

我想分割一个字符串,例如:

CS ID=123 HD=CT NE="HI THERE"

到一个看起来像这样的列表

['CS', 'ID=123', 'HD=CT', 'NE=HI THERE']

shlex.split() 函数可以执行此操作,但速度非常慢。我需要找到一种非常快速的方法来做到这一点,可能使用 python 正则表达式。任何帮助表示赞赏。谢谢!

所以我没有预料到 re 模块在 Jython 中使用时几乎和 shlex 模块一样慢。有谁知道如何在没有 re 模块的情况下使用 Java 正则表达式或其他一些巧妙的方式来做到这一点?

最佳答案

不确定您是否真的要去掉 HI THERE 部分的引号,该部分包含双引号。

>>> import re
>>> x = '''CS ID=123 HD=CT NE="HI THERE"'''
>>> re.findall("""\w+="[^"]*"|\w+='[^']*'|\w+=\w+|\w+""", x)
['CS', 'ID=123', 'HD=CT', 'NE="HI THERE"']

HI THERE 部分不带引号

>>> map(''.join,re.findall("""(\w+=)"([^"]*)"|(\w+=)'([^']*)'|(\w+=\w+)|(\w+)""", x))
['CS', 'ID=123', 'HD=CT', 'NE=HI THERE']

关于Python 正则表达式,用于在值可能有或没有引号时拆分由等号分隔的键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20909563/

相关文章:

ruby - 使用 Ruby 1.8.7,当字符串未与特定文本绑定(bind)时,是否进行正则表达式替换?

c - 发送到函数的简单字符指针不起作用

r - 如何用逗号分割字符串但保留日期?

java - 为什么输出是科学计数法?

python - 正确安装 shapely 到系统解释器中以避免段错误

python - 如何将 Google-Cloud-Vision OCR protobuf 响应保存/加载到磁盘?

python - 如何让Python Bottle识别多个根路径

python - 如何查找文件名的特定部分/扩展名?

python findall 只查找最后一次出现

c# - 此 ironpython 代码的 C# 版本是什么