【问题标题】:Why doesnt [\n$] work while (\n|$) does?为什么 [\n$] 不起作用,而 (\n|$) 起作用?
【发布时间】:2013-06-02 21:11:25
【问题描述】:

我们有这个字符串(末尾没有换行):

The quick brown fox jumps over the lazy dog

我想匹配整个字符串,直到出现新行 \n 或结束 $

  • 我第一次尝试:[\n$] - 没用。
  • 然后我尝试了(\n|$) - 成功了

问题:为什么[\n$] 不匹配字符串而(\n|$) 匹配?

【问题讨论】:

  • 如果您对正则表达式使用m ("multi-line") 修饰符,那么$ 将表示字符串中的任何行尾,而不是实际的行尾细绳。所以你根本不需要指定\n
  • 其实匹配整行只需要^.*.
  • "我想匹配整个字符串直到换行" ...不是整行吗? :)
  • @Jack Ok :) 你是对的 :) 但由于某种原因我不能使用这个解决方案......因为如果它在字符串中,我需要匹配行尾。只有结尾可能什么都没有或换行。

标签: regex pcre


【解决方案1】:

因为字符类中的 $ 被视为文字

【讨论】:

  • @Jack:酷!非常感谢!
【解决方案2】:

另一种看待它的方式:一个字符类只匹配一个字符。 $ 匹配的行尾是一个空字符串。这就是字符类不能匹配行尾的原因。

(因此,$ 的唯一可能解释是文字。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多