【问题标题】:regex pattern starting with "=" and exceptions以“=”开头的正则表达式模式和异常
【发布时间】:2021-06-21 08:48:19
【问题描述】:

我正在尝试编写一个表达式,该表达式将与 json 文件一起用于 vscode 扩展。我的表达式应该以"=\s*" 开头,然后我希望它选择等于之后的所有内容,但以下情况除外:

  1. TRUEFALSE 相等后
  2. 以数字开头
  3. 以'或"开头

我尝试了很多事情,并且分别尝试了每个案例,但当我尝试将它们放在一起时,它不起作用

文档字符串示例:

abc = 测试
abc = 真
abc = 错误
abc = "测试"
abc = '测试'
abc = 123

在这些示例中,我的正则表达式应该只保留第一个,“测试”可以是任何东西。

最接近解决方案的是/(=\s*)^(((?!TRUE|FALSE|[0-9]|\"|\').)*)$/gm

【问题讨论】:

  • 请在问题中添加您尝试过的内容。 “加入”模式的确切问题是什么?你有任何测试用例/文本吗?也请在此处添加并说明预期行为。
  • 也许甚至添加测试用例,例如“abc”应该匹配但“abd”不应该匹配
  • 也许您只是想阅读dotenv 之类的文件,您可能应该选择already existing solution
  • 抱歉,您要匹配整行还是只匹配 = 和空格?如果后者使用=(?!\s*(?:TRUE|FALSE|[0-9"']))\s*,否则使用.*=(?!\s*(?:TRUE|FALSE|[0-9"'])).*
  • 听起来您打算使用正则表达式解析 JSON。如果是这样,它就不是要使用的工具,而且当你得到的 JSON 看起来与你期望的不完全一样时,你会遇到问题。

标签: json regex vscode-extensions


【解决方案1】:

你可以使用

查找内容^(.*?=)(?!\s*(?:TRUE|FALSE|[0-9"'])).*
替换为$1

详情

  • ^ - 行首
  • (.*?=) - 第 1 组:除换行符之外的任何零个或多个字符,尽可能少,然后是 = 字符
  • (?!\s*(?:TRUE|FALSE|[0-9"'])) - 如果在当前位置的右侧有
    • \s* - 零个或多个空格
    • (?:TRUE|FALSE|[0-9"']) - TRUE, FALSE, 数字或 "'
  • .* - 该行的其余部分。

查看regex demo 和演示截图:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2013-11-23
    • 2019-06-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多