为什么 (?:\s)\w{2}(?:\s) 不只匹配一个 2 个字母的子字符串,周围有空格而不是空格?
Why does (?:\s)\w{2}(?:\s) not match only a 2 letter sub string with spaces around it not the spaces as well?
我正在尝试制作一个正则表达式,该正则表达式匹配小于或等于 2 个字符的所有子字符串,并且在以太端带有 space。我做错了什么?
ex 我想要做的是让它匹配 %2
或 q
但不匹配 123
而不是 space。
更新此 \b\w{2}\b
如果它也匹配一个字母子字符串并且没有忽略特殊字符,如 - 或 #。
你应该使用
(^|\s)\S{1,2}(?=\s)
由于不能使用后视,可以使用捕获组,如果替换文本,则可以使用 </code> 恢复捕获的部分。</p>
<p>见<a href="https://regex101.com/r/xP0kZ4/1" rel="nofollow">regex demo here</a></p>
<p>正则表达式细分:</p>
<ul>
<li><code>(^|\s)
- 第 1 组 - 字符串开头或空格
\S{1,2}
- 1 或 2 个非空白字符
(?=\s)
- 检查 1 或 2 个非空白字符后是否有空白。如果不是,则失败。
我正在尝试制作一个正则表达式,该正则表达式匹配小于或等于 2 个字符的所有子字符串,并且在以太端带有 space。我做错了什么?
ex 我想要做的是让它匹配 %2
或 q
但不匹配 123
而不是 space。
更新此 \b\w{2}\b
如果它也匹配一个字母子字符串并且没有忽略特殊字符,如 - 或 #。
你应该使用
(^|\s)\S{1,2}(?=\s)
由于不能使用后视,可以使用捕获组,如果替换文本,则可以使用 </code> 恢复捕获的部分。</p>
<p>见<a href="https://regex101.com/r/xP0kZ4/1" rel="nofollow">regex demo here</a></p>
<p>正则表达式细分:</p>
<ul>
<li><code>(^|\s)
- 第 1 组 - 字符串开头或空格
\S{1,2}
- 1 或 2 个非空白字符(?=\s)
- 检查 1 或 2 个非空白字符后是否有空白。如果不是,则失败。