避免在正则表达式模式中的字符之间
avoid in between character in regex pattern
我试图在所有具有特定属性的文件中找到该组件。尝试了这个正则表达式模式 <Button[^>]*[\n\s]+className[^>]*>
。 95% 正常。
你可以在上面的这个例子中看到。具有条件属性的按钮组件将不匹配。它也有 className 属性。它应该匹配。它不匹配,因为条件属性行中的这个大于字符 =>
。所以,它甚至在组件关闭标记之前就停止了。
如何避免在此正则表达式模式中出现大于字符 (>
)?
您需要匹配任何字符,但 >
或属性(一大块字符字符)后跟 =
,然后是花括号之间的子字符串一次或多次 (?:\w+=\{[^{}]*\}|[^>])*
.
此外,您应该记住 Visual Studio 代码正则表达式引擎需要 {
和 }
字符 class 之外的字符进行转义。
图案看起来像
<Button(?:\w+=\{[^{}]*\}|[^>])*\sclassName=(?:\w+=\{[^{}]*\}|[^>])*>
参见regex demo。
详情
<Button
- 文字字符串
(?:\w+=\{[^{}]*\}|[^>])*
- 零次或多次重复
\w+=\{[^{}]*\}
- 一个或多个字母、数字或下划线,={
,除 {
和 }
之外的零个或多个字符,然后是 }
|
- 或
[^>]
- >
以外的任何字符
\s
- 一个空格
className=
- 文字文本
(?:\w+=\{[^{}]*\}|[^>])*
- 见上文
>
- 一个 >
字符。
我试图在所有具有特定属性的文件中找到该组件。尝试了这个正则表达式模式 <Button[^>]*[\n\s]+className[^>]*>
。 95% 正常。
你可以在上面的这个例子中看到。具有条件属性的按钮组件将不匹配。它也有 className 属性。它应该匹配。它不匹配,因为条件属性行中的这个大于字符 =>
。所以,它甚至在组件关闭标记之前就停止了。
如何避免在此正则表达式模式中出现大于字符 (>
)?
您需要匹配任何字符,但 >
或属性(一大块字符字符)后跟 =
,然后是花括号之间的子字符串一次或多次 (?:\w+=\{[^{}]*\}|[^>])*
.
此外,您应该记住 Visual Studio 代码正则表达式引擎需要 {
和 }
字符 class 之外的字符进行转义。
图案看起来像
<Button(?:\w+=\{[^{}]*\}|[^>])*\sclassName=(?:\w+=\{[^{}]*\}|[^>])*>
参见regex demo。
详情
<Button
- 文字字符串(?:\w+=\{[^{}]*\}|[^>])*
- 零次或多次重复\w+=\{[^{}]*\}
- 一个或多个字母、数字或下划线,={
,除{
和}
之外的零个或多个字符,然后是}
|
- 或[^>]
->
以外的任何字符
\s
- 一个空格className=
- 文字文本(?:\w+=\{[^{}]*\}|[^>])*
- 见上文>
- 一个>
字符。