正则表达式仅在第一行中匹配字符

时间:2018-06-26 19:52:36

标签: regex

我正在使用记事本++,并且想使用正则表达式来替换(多个文件的)第一行中的所有连字符。连字符可以是一个或多个,并且在连字符之前或之后可以有一个或多个其他字符。

仅在第一行中,我可以使用什么正则表达式来查找特定字符(在本例中为连字符)的所有实例?

示例输入:

Place-Div/Tot--Div---Guntime-Nettime-Pace--Name-------------------Ag-S-Race#-City/state
Pl-Div/Tot----Div---Net-------Pace--Name-------------------Ag-S--Hometown
Pla-----Finishtime---Pace--Name-------------------Ag-S-Bib-City/state

所需的输出:

Place Div/Tot  Div   Guntime Nettime Pace  Name                   Ag S Race# City/state
Pl Div/Tot    Div   Net       Pace  Name                   Ag S  Hometown
Pla     Finishtime   Pace  Name                   Ag S Bib City/state

1 个答案:

答案 0 :(得分:0)

尝试

找到/A/B/show
替换为空

以全局正则表达式执行此操作,并一次性应用到所有文件。

可读版本

(?:^|(?!^)\G)[^\r\n-]*\K-+

示例:

输入

 (?:
      ^                       # First line
   |  
      (?! ^ )                 # Not BOS, and can't get past newlines anyway
      \G                      # Anchor, start this match where last left off
 )
 [^\r\n-]*               # Any not CRLF nor dash
 \K                      # Disregard up to here
 -+                      # 1 to many dashes

输出

---a-s-v---
--as-f-b-asfb---
--