【发布时间】:2011-12-08 17:54:25
【问题描述】:
好的,我目前正在使用 Python 的正则表达式库将以下字符串拆分为以分号分隔的字段组。
'key1:"this is a test phrase"; key2:"this is another test phrase"; key3:"ok this is a gotcha\; but you should get it";'
正则表达式:\s*([^;]+[^\\])\s*;
我目前正在使用上面的 pcre,它工作正常,直到遇到 key3 上面提到的短语之一中包含转义分号的情况。
如何修改此表达式以仅在非转义分号上拆分?
【问题讨论】:
-
当您尝试上面示例中的
\;时发生了什么?似乎在那之后它应该无法匹配。您的模式中的[^\\]是尝试解决此问题的方法,还是除了处理\;之外还有其他意义吗? -
引用的字符串可能包含转义的引号吗?即
key:" \" ";并且引用的字符串可能包含非转义分号吗?即key:" ; ";? -
贾斯汀,这是针对此问题的尝试解决方法。前两组被正确解析,但奇数(最后)组最终只是'但你应该得到它';',在转义分号之前切掉块。
-
Ridgerunner,字符串中的分号和引号必须转义。