匹配不以数字结尾的行(可能有尾随空格)

时间:2015-06-13 15:28:48

标签: regex emacs

我想匹配一个不以数字结尾的行(可能是尾随空格。我正在使用Emacs Regex(我打开使用其他正则表达式)。

  1. 有什么好的正则表达式来实现这个目标?

  2. 我们可以使用占有量词吗? (假设占有量词在Emacs Regex中工作)

  3. 这是我的两次尝试。

    [^[:digit:]] *^J
    

    其中^J是新行号,由C-q C-j键入,将匹配

    concepts of logic 1
    

    但是

    [^[:digit:]] *$
    

    不符合

    concepts of logic 1
    

    我想知道为什么会有区别?

  4. 感谢。

1 个答案:

答案 0 :(得分:0)

所以你想要匹配一个不以任何字符结尾的行(即,为空)或以不是数字而不是新行字符的字符结尾的行?

以交互方式,您可以通过以下方式键入正则表达式C-M-s

\(^$\|[^C-qC-j[:digit:]]\)$

键入C-q C-j时,交互式地插入换行符char(C-j)。在Isearch中看起来像这样,^J是单个(换行符)char:

\(^$\|[^^J[:digit:]]\)$

从Lisp中,您可以将反斜杠加倍并使用\n来表示换行符:

\\(^$\\|[^\n[:digit:]]\\)$

如果要允许尾随空格,请在[ \t]*之前添加$。例如,以交互方式:

\(^$\|[^C-qC-j[:digit:]]\)[ \t]*$