我如何在文件中找到值,但仅限于不以#开头的行?

时间:2018-05-06 07:26:49

标签: regex

我有一份看起来像这样的文件:

# Document ID 8934
# Last updated 2018-05-06
52 84 12 70 23 2 7 20 1 5
4 2 7 81 32 98 2 0 77 6
(..and so on..)

换句话说,它从一些注释行开始,然后文档的其余部分只是一串用空格分隔的数字。

我试图编写一个正则表达式,它可以在所有不以#开头的行上获取所有数字,但我似乎无法得到它。

我已经阅读了诸如

之类的答案
  1. Regular Expressions: Is there an AND operator?
  2. Regex: Find a character anywhere in a document but only on lines that begin with a specific word

    并抓住http://regular-expressions.info等网站,但我仍然无法获得有效的表达方式(我能得到的最好的版本是^[^#].*

  3. 那么如何匹配字符串中的数字(或文本或其他内容),但仅限于不以某个字符开头的行?

2 个答案:

答案 0 :(得分:1)

你的正则表达式User使用一个否定的character class,它与字符串hasOne的开头不匹配belongsTo,之后匹配任何字符零次或多次。 例如,这也会匹配^[^#].*

您可能会使用alternation来匹配以#开头的整行#或在一个或多个数字组中捕获^

您的数字被捕获到第1组。您可以将t test更改为例如字符类^#.*$,以匹配多个数字。

(?:^#.*$|(\d+))

<强>详情

  • (\d+)非捕获组
    • (\d+)从第([\w+.]+)行#开头匹配,后跟任意字符零{或更多次(?:,直至字符串^#.*$结束
    • ^
    • .*捕获群组中的一个或多个数字
  • $关闭非捕获组

答案 1 :(得分:0)

我认为一种更简单的方法是用&#34;&#34;替换线条。首先使用这个正则表达式:

^#.*

然后您可以将所有数字与此匹配:

-?\d+ (-? is for negative)