避免在正则表达式模式中的字符之间

avoid in between character in regex pattern

我试图在所有具有特定属性的文件中找到该组件。尝试了这个正则表达式模式 <Button[^>]*[\n\s]+className[^>]*>。 95% 正常。

Regex Example

你可以在上面的这个例子中看到。具有条件属性的按钮组件将不匹配。它也有 className 属性。它应该匹配。它不匹配,因为条件属性行中的这个大于字符 =>。所以,它甚至在组件关闭标记之前就停止了。

如何避免在此正则表达式模式中出现大于字符 (>)?

您需要匹配任何字符,但 > 或属性(一大块字符字符)后跟 =,然后是花括号之间的子字符串一次或多次 (?:\w+=\{[^{}]*\}|[^>])*.

此外,您应该记住 Visual Studio 代码正则表达式引擎需要 {} 字符 class 之外的字符进行转义。

图案看起来像

<Button(?:\w+=\{[^{}]*\}|[^>])*\sclassName=(?:\w+=\{[^{}]*\}|[^>])*>

参见regex demo

详情

  • <Button - 文字字符串
  • (?:\w+=\{[^{}]*\}|[^>])* - 零次或多次重复
    • \w+=\{[^{}]*\} - 一个或多个字母、数字或下划线,={,除 {} 之外的零个或多个字符,然后是 }
    • | - 或
    • [^>] - >
    • 以外的任何字符
  • \s - 一个空格
  • className= - 文字文本
  • (?:\w+=\{[^{}]*\}|[^>])* - 见上文
  • > - 一个 > 字符。