【发布时间】:2019-11-06 20:40:58
【问题描述】:
我想出了以下正则表达式,以便能够从文本中提取引号:
"(?P<quote>.+?(?<![^\\]\\))"
在上面运行正常:https://regex101.com/r/NVjtW4/1。
但是,我想知道是否有任何其他“技术”可以用来提取引用的文本。也许有以下限制:
- 不使用
.+? - 不使用否定的lookbehind(可能是否定字符类)。
基本上,我的问题不是“唯一的方法是什么?”,而是“可能有哪些其他选择”,所以我可以看到不同的可能方法来解决我觉得困难和棘手的正则表达式工艺(逃脱一个\,但不是两个\\等)
另外,我想检查一下引号之前是否有奇数个转义:
".*?(?<=(\\{2})*)"
但这给了我"* A quantifier inside a lookbehind makes it non-fixed width" 的错误。我的另一个是:
"[^((\\{2})*")]+"
但这也不匹配转义引号。
【问题讨论】:
-
还有一个常见的unrolled 正则表达式,如this answer: 3rd variant。可能是最有效的模式。
标签: regex