regex - 避免在正则表达式模式中的字符之间
问题描述
我正在尝试在具有特定属性的所有文件中查找组件。试过这个正则表达式模式<Button[^>]*[\n\s]+className[^>]*>
。95% 工作正常。
您可以在上面的示例中看到。具有条件属性的按钮组件将不匹配。它也有 className 属性。它应该匹配。=>
由于条件属性行中的大于字符,它不匹配。因此,它甚至在组件关闭标记之前停止。
如何>
在此正则表达式模式中避免介于大于字符 ( ) 之间?
解决方案
您需要匹配任何字符但>
或属性(一大块单词字符)=
,然后匹配大括号之间的子字符串一次或多次(?:\w+=\{[^{}]*\}|[^>])*
。
此外,您应该记住 Visual Studio Code 正则表达式引擎需要在字符{
类}
之外进行转义。
图案看起来像
<Button(?:\w+=\{[^{}]*\}|[^>])*\sclassName=(?:\w+=\{[^{}]*\}|[^>])*>
请参阅正则表达式演示。
细节
<Button
- 文字字符串(?:\w+=\{[^{}]*\}|[^>])*
- 零次或多次重复\w+=\{[^{}]*\}
- 一个或多个字母、数字或下划线、、={
零个或多个字符,除了{
and}
然后是 a}
|
- 或者[^>]
- 任何字符以外的任何字符>
\s
- 一个空格className=
- 文字文本(?:\w+=\{[^{}]*\}|[^>])*
- 看上面>
- 一个>
字符。
推荐阅读
- ruby - 如何跳过 .map 中的空格。红宝石
- c - 通过动态分配创建数组后,在C中通过realloc改变内存大小时出现问题
- r - 从R中for循环的同一迭代中提取不同的统计信息
- amazon-web-services - 工作流没有终端状态
- c - 在变量上使用 fgetc(stdin) 后,如何将输入传递给 strtol?
- android - 如何更改下拉按钮中的微调器箭头?(形状和位置)
- python - 如何在熊猫中使用时区将unix纪元时间转换为日期时间
- javascript - Javascript FileReader() 图像预览每次选择都会翻倍
- java - java - 如何使用Array.sort在JTextArea java中以降序和升序形式显示矩阵?
- javascript - 数据争吵:在javascript中对两个不同数组的值求和并推送一个新对象