我觉得这个正则表达式模式应该有效,但它没有
I feel like this regex pattern should work but it doesn't
我是正则表达式的新手,老实说没有那么有经验。
我得到了我想尝试使用的正则表达式模式。
/(a..e.)([a-zA-Z])/gi
计划是它应该匹配任何遵循该模式的单词。所以我可以遍历单词列表,并将 A 锁定在倒数第二个位置的 E 的第一个位置。它会找到所有匹配的单词。但是我 运行 遇到了一个问题。我希望它与单词 ADDER 匹配,但事实并非如此。当我删除最后一个句点时,模式变为
/(a..e)([a-zA-Z])/gi
确实有效。这两者不应该基本相同吗?因为我们使用通配符点?
(a..e.)([a-zA-Z])
模式查找 a
,之后必须有任意两个字符(换行符除外),然后是一个 e
字母,然后是任何一个换行符以外的字符。此模式既不能保证您匹配整个单词,也不能保证与 .
匹配的字符将是字母。
/(a..e.)([a-zA-Z])/gi
不等于 /(a..e)([a-zA-Z])/gi
,因为它们匹配和使用不同的字符串。由于 e
之后没有 .
,第二个模式匹配的字符较少,除了在任何单个字母之前的 e
字母(最后一个模式部分)之后的换行字符之外,不允许任何单个字符.
要匹配以 a
字母开头的单词,后跟两个字母,然后是 e
字母,然后是另一个字母,您可以使用
/\ba[a-z]{2}e[a-z]\b/gi
参见regex demo。 详情:
/gi
- 以不区分大小写的方式匹配所有出现的 (g
) (i
)
\b
- 匹配单词边界
a
- a
/ A
[a-z]{2}
- 两个 ASCII 字母
e
- e
字母
[a-z]
- 任何 ASCII 字母
\b
- 匹配单词边界。
我是正则表达式的新手,老实说没有那么有经验。 我得到了我想尝试使用的正则表达式模式。
/(a..e.)([a-zA-Z])/gi
计划是它应该匹配任何遵循该模式的单词。所以我可以遍历单词列表,并将 A 锁定在倒数第二个位置的 E 的第一个位置。它会找到所有匹配的单词。但是我 运行 遇到了一个问题。我希望它与单词 ADDER 匹配,但事实并非如此。当我删除最后一个句点时,模式变为
/(a..e)([a-zA-Z])/gi
确实有效。这两者不应该基本相同吗?因为我们使用通配符点?
(a..e.)([a-zA-Z])
模式查找 a
,之后必须有任意两个字符(换行符除外),然后是一个 e
字母,然后是任何一个换行符以外的字符。此模式既不能保证您匹配整个单词,也不能保证与 .
匹配的字符将是字母。
/(a..e.)([a-zA-Z])/gi
不等于 /(a..e)([a-zA-Z])/gi
,因为它们匹配和使用不同的字符串。由于 e
之后没有 .
,第二个模式匹配的字符较少,除了在任何单个字母之前的 e
字母(最后一个模式部分)之后的换行字符之外,不允许任何单个字符.
要匹配以 a
字母开头的单词,后跟两个字母,然后是 e
字母,然后是另一个字母,您可以使用
/\ba[a-z]{2}e[a-z]\b/gi
参见regex demo。 详情:
/gi
- 以不区分大小写的方式匹配所有出现的 (g
) (i
)\b
- 匹配单词边界a
-a
/A
[a-z]{2}
- 两个 ASCII 字母e
-e
字母[a-z]
- 任何 ASCII 字母\b
- 匹配单词边界。