【发布时间】:2020-02-05 08:46:53
【问题描述】:
我有这个正则表达式:(?:\[|\G(?!^))('[^']+?')\s*,?\s*(?=[^\]]*?\]),它只匹配方括号内引号之间的内容(如数组):['Foo', 'Bar'] => 返回'Foo' 'Bar'。
问题在于,在这种情况下,单引号是一个特殊字符,因为它被正则表达式用作分隔符,但有时我需要将值内的单引号作为转义字符传递:['F'oo', 'B'ar'] .
我正在尝试通过将这个非捕获(?:(?=(\\?))\1.) 组调整为正则表达式来执行类似“F\'oo”的操作,但它不起作用,我尝试了许多不同的方法。
这个非捕获组正则表达式来自这个answer,他成功地使用反斜杠来转义特殊字符。
我将 C# 与 .NET Core 结合使用。
全文类似于:eq('Property', ['F'oo', 'Ba'r', '123'])
如何解决?
【问题讨论】:
-
不能只使用
'.+?'来清除分隔符,那样不行。彼得罗德的['F'o''o',',',',',',','ar'].