首页 > 解决方案 > 避免在正则表达式模式中的字符之间

问题描述

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

正则表达式示例

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

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

标签: regexhtml-parsing

解决方案


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

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

图案看起来像

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

请参阅正则表达式演示

细节

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

推荐阅读