.net - 正则表达式 - 转义字符
问题描述
我有这个正则表达式:(?:\[|\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'])
如何解决?
解决方案
对于获取引用的转义字符,已经有一个类似的问题。我更喜欢这个答案。
将您的捕获部分更改('[^']+?')
为('[^\\']*(?:\\.[^\\']*)*')
. 您可以进一步删除惰性量词,这在已经使用否定类时不会产生太大影响。
可能需要对反斜杠进行额外的转义。
推荐阅读
- python - 在多个值中寻找价值
- javascript - API 包含 JSON 数据如何在 HTML 和 JavaScript 上呈现?
- atlassian-sourcetree - 完成发布期间的 Sourcetree 致命错误 - 致命:无法读取“https://github.com”的用户名:未配置设备
- dialogflow-es - Google Assistant 上的用户位置(纬度和经度)没有快速更新
- sql - 具有许多参数的条件
- javascript - Google OAuth:尝试发出获取请求时,请求的资源上不存在“Access-Control-Allow-Origin”标头
- flutter - 如何在颤动中扩展的 sliverappbar 内制作个人资料图片
- python - 有没有办法在 python 中为带有类型提示的函数参数指定一系列有效值?
- javascript - 无法为范围角度注册 ServiceWorker
- delphi - Delphi 10 中的“下限超过上限”错误