首页 > 解决方案 > 正则表达式 - 转义字符

问题描述

我有这个正则表达式:(?:\[|\G(?!^))('[^']+?')\s*,?\s*(?=[^\]]*?\])它只匹配方括号内引号之间的内容(如数组): ['Foo', 'Bar'] => returns 'Foo' 'Bar'

问题是,在这种情况下,单引号是一个特殊字符,因为它被正则表达式用作分隔符,但我有时需要将值内的单引号作为转义字符传递:['F'oo', 'B'ar']

我正在尝试通过使这个非捕获(?:(?=(\\?))\1.)组适应正则表达式来做类似'F\'oo'的事情,但它不起作用,我尝试了许多不同的方法。

这个非捕获组正则表达式来自这个答案,他成功地使用反斜杠来转义特殊字符。

我将 C# 与 .NET Core 一起使用。

全文是这样的:eq('Property', ['F'oo', 'Ba'r', '123'])

如何解决?

标签: .netregex

解决方案


对于获取引用的转义字符,已经有一个类似的问题。我更喜欢这个答案

将您的捕获部分更改('[^']+?')('[^\\']*(?:\\.[^\\']*)*'). 您可以进一步删除惰性量词,这在已经使用否定类时不会产生太大影响。

可能需要对反斜杠进行额外的转义


推荐阅读