$ 在正则表达式中的行为是什么?

What is the behaviour of $ in regex expressions?

在正则表达式中两次或多次使用 $ 时,$ 的行为是什么?根据 Regex Wiki "$" 应该匹配行尾。我可以在正则表达式中多次使用 $ 来匹配后续行吗?

考虑以下正则表达式:

^(a$|b)(c)$

为什么上面的正则表达式不匹配字符串"a\nc\n"。您可以在 https://regexr.com/4b84o.

查看相同内容

一旦达到 "a\n",正则表达式似乎就会停止验证,因此 "c\n" 不会被验证,但会被用于下一个要匹配的字符串。正则表达式不验证多行吗? $ 表示行尾(即 \n 字符)还是匹配要匹配的字符串的结尾?

首先,您没有启用 m 标志,因此 $ 匹配字符串的结尾。

即使您启用了 m 标志,正则表达式仍然不会匹配。

这是因为$只匹配行尾的位置即是0长度匹配,不是换行字符\n.要匹配换行符,请使用 \n.

所以 (a$|b)(c)$ 说的是:

There will be an a and that will be the end of the line, or b. After that, there is a c. And c is the end of a line as well.

这是自相矛盾的,因为如果 a 在行尾,它后面会有一个换行符(或者什么都没有),所以不可能有 c.因此,您的正则表达式不会匹配任何内容。

改用 \n 字符:

(a\n|b)c\n