从空格开始的正则匹配线,第一个字符是非数字的



我正在尝试创建一个正等式,该正则只能匹配从空格开始的线,然后将1-4个非数字作为第一个字符,然后至少一个或多个空格之后数字。此发行正则的目的是在记事本 的"查找和替换"选项中使用它来删除任何不从空间开始的行,然后将数字作为行中的第一个字符。

我现在允许我匹配从空格开始的线,然后是一组数字和另一个空间。但是,这些是我要保留的线条。如何修改以下正则态度以使其与这些行以外的所有其他所有内容匹配?

/^([s]+d[s]|[s]+dd[s]|[s]+ddd[s])/gm

这是我们正在使用正则打开的数据的示例。正则应匹配不以1、2、2、49、50、99和100开头的线。请注意,以" 40th"one_answers" 5/23/2017"开头的线应匹配。

                                                                      Page 1
          40th Marathon and 25th Marathon Relay
5/23/2017      USATF Certified Marathon (#RE98723UB)      Downtown/City, ST
Timing: Race Services    See our Calendar of Events at www.website.com
             Results questions: http://www.website.com/fixresults
=====================================================================================
                 **** FINAL RESULTS IN NETTIME ORDER ****
Place Div/Tot  Div   Halfway 22miles Guntime  Nettime Pace  Name   
===== ======== ===== ======= ======= =======  ======= ===== =======
    1   1/153  M0139 1:15:08 2:05:50 2:29:20   2:29:20  5:42 Eric
    2   2/153  M0139 1:15:07 2:06:29 2:29:56*  2:29:56  5:44 Bryan
Record 2:17:35 by Randy in 1986
   49   8/77   M4049 1:36:48 2:54:03 3:37:02   3:36:59  8:17 Joshua
   50  28/153  M0139 1:49:45 3:03:56 3:37:38#  3:37:22  8:18 Brian
# Under USATF OPEN guideline
   99   1/16   M6069 1:56:30 3:15:24 3:51:06   3:50:46  8:49 Paul
  100   3/35   F5059 1:50:06 3:11:37 3:51:03   3:50:47  8:49 Ashley
  101   4/35   F5059 1:55:26 3:16:37 3:56:03   3:55:57  9:14 Joan
* Under USATF Age-Group guideline
% For an Explanation of AgeGraded Percentages, See Here: http://www.website.com/agegrading

因此,如果我们使用记事本 中的正则ggex查找匹配的字符串/行并替换(删除(它们,则所需的最终结果将如下(换句话说,以下行将不匹配正则符合条件(:

    1   1/153  M0139 1:15:08 2:05:50 2:29:20   2:29:20  5:42 Eric
    2   2/153  M0139 1:15:07 2:06:29 2:29:56*  2:29:56  5:44 Bryan
   49   8/77   M4049 1:36:48 2:54:03 3:37:02   3:36:59  8:17 Joshua
   50  28/153  M0139 1:49:45 3:03:56 3:37:38#  3:37:22  8:18 Brian
   99   1/16   M6069 1:56:30 3:15:24 3:51:06   3:50:46  8:49 Paul
  100   3/35   F5059 1:50:06 3:11:37 3:51:03   3:50:47  8:49 Ashley
  101   4/35   F5059 1:55:26 3:16:37 3:56:03   3:55:57  9:14 Joan

任何帮助都将不胜感激。

请参阅此处使用的REGEX

^(?! +d+ ).*n*
  • ^在线开始时断言位置
  • (?! +d+ )负LookAhead确保以下是一个或多个空间,而是一个或多个数字,然后是一个空间
  • .*匹配任何字符(n除外(任何次数
  • n*匹配任意数量的newline字符

结果:

    1   1/153  M0139 1:15:08 2:05:50 2:29:20   2:29:20  5:42 Eric
    2   2/153  M0139 1:15:07 2:06:29 2:29:56*  2:29:56  5:44 Bryan
   49   8/77   M4049 1:36:48 2:54:03 3:37:02   3:36:59  8:17 Joshua
   50  28/153  M0139 1:49:45 3:03:56 3:37:38#  3:37:22  8:18 Brian
   99   1/16   M6069 1:56:30 3:15:24 3:51:06   3:50:46  8:49 Paul
  100   3/35   F5059 1:50:06 3:11:37 3:51:03   3:50:47  8:49 Ashley
  101   4/35   F5059 1:55:26 3:16:37 3:56:03   3:55:57  9:14 Joan

如果要在查找/替换对话框中使用,则可以使用狡猾的技巧...

^(pattern_I_want_to_keep)$|^.*$

并将其替换为

1

尽管它会留下空白,但不匹配您想要保留的内容的任何东西都将被删除。可以用插件或其他正则删除它们。

这比炮制不想保留或使用负面lookahead的匹配更简单。

最新更新