为什么此正则表达式无法匹配 VSCode 搜索和替换中的任何内容?
Why won't this regular expression match anything in VSCode search & replace?
我正在使用 VSCode
演示我选择的搜索选项的屏幕截图:
这是我要使用的表达方式。它适用于其他地方,例如 regexr.com,但不适用于 VSCode...
font\-size\:\s{0,1}\d{2,2}px\;\s{0,1}
这里是 HTML:
https://codepen.io/JashoowellPadderssonn/pen/WNbVVEq
我也试过禁用所有不起作用的扩展。这是我的 VSCode 设置:
https://gist.github.com/CrocodileInAWhileAlligatorLater/409f0d9d179955ff80419a8a4506a09d
您应该只转义需要转义的字符。
使用
font-size:\s?\d{2}px;\s?
请注意 -
(此处)、:
和 ;
并不特殊,因此不得转义。
原因是正则表达式是now compiled with the u
modifier enabling Unicode property classes to work (e.g. \p{L}
matches any Unicode letter). Here is a VSCode Github issue,考虑用unicode模式的JS正则表达式搜索。 2019年9月3日关闭,2019年10月3日验证
副作用是对转义有更严格的要求。
字符 classes、[...]
之外的字符必须转义:.
、^
、 $
、*
、+
、?
、(
、)
、[
、{
(您可以在大多数情况下,不要将其转义,但是,如果您需要查找 {
后跟数字,然后需要 }
转义,请参见 /a\{3}/
(匹配 a{3}
) != /a{3}/
- 匹配三个 a
s), \
и |
.
内部字符 classes,这些字符必须始终转义:]
和 \
。如果 -
不位于字符 class 的开头或结尾,则必须对其进行转义([-0-9_]
= [0-9_-]
= [_\-0-9]
),并且 ^
必须在字符 class 开始表示文字 ^
时进行转义([^0]
(匹配 0
以外的任何字符)!= [\^0]
(匹配 ^
或 0
))。参见 What special characters must be escaped in regular expressions?。
我正在使用 VSCode
演示我选择的搜索选项的屏幕截图:
这是我要使用的表达方式。它适用于其他地方,例如 regexr.com,但不适用于 VSCode...
font\-size\:\s{0,1}\d{2,2}px\;\s{0,1}
这里是 HTML:
https://codepen.io/JashoowellPadderssonn/pen/WNbVVEq
我也试过禁用所有不起作用的扩展。这是我的 VSCode 设置:
https://gist.github.com/CrocodileInAWhileAlligatorLater/409f0d9d179955ff80419a8a4506a09d
您应该只转义需要转义的字符。
使用
font-size:\s?\d{2}px;\s?
请注意 -
(此处)、:
和 ;
并不特殊,因此不得转义。
原因是正则表达式是now compiled with the u
modifier enabling Unicode property classes to work (e.g. \p{L}
matches any Unicode letter). Here is a VSCode Github issue,考虑用unicode模式的JS正则表达式搜索。 2019年9月3日关闭,2019年10月3日验证
副作用是对转义有更严格的要求。
字符 classes、[...]
之外的字符必须转义:.
、^
、 $
、*
、+
、?
、(
、)
、[
、{
(您可以在大多数情况下,不要将其转义,但是,如果您需要查找 {
后跟数字,然后需要 }
转义,请参见 /a\{3}/
(匹配 a{3}
) != /a{3}/
- 匹配三个 a
s), \
и |
.
内部字符 classes,这些字符必须始终转义:]
和 \
。如果 -
不位于字符 class 的开头或结尾,则必须对其进行转义([-0-9_]
= [0-9_-]
= [_\-0-9]
),并且 ^
必须在字符 class 开始表示文字 ^
时进行转义([^0]
(匹配 0
以外的任何字符)!= [\^0]
(匹配 ^
或 0
))。参见 What special characters must be escaped in regular expressions?。