在记事本++中分隔行

时间:2019-06-16 19:26:40

标签: regex parsing notepad++

我想知道是否可以使用正则表达式命令仅查找“用户名” 我当前的文档看起来像这样

Username: Biu2l40  
Occupation: IT  
Age: 24  

Username: John1  
Occupation: IT  
Age: 29  

Username: Redsock234  
Occupation: Janitor  
Age: 22 

我想找到一种方法,使它如此

Username: Biu2l40  
Username: John1  
Username: Redsock234

4 个答案:

答案 0 :(得分:1)

可能可以使用这些表达式来实现

 (Username:.*\s)|.*\n
 (Username:.*\s)|.*\r?\n

基于bobble bubble的建议,该建议更简单,更快捷:

Demo 1

Demo 2

比此表达式:

 (Username:.*\s)|[\s\S]*?

这也可能起作用,替换可以是$1

Demo 3

建议

bobble bubble的建议是:

  

,但是[I]会将[第三个表达式的]右侧更改为|.*\n|.*\r?\n   以获得更好的性能。甚至看不出|[\s\S]*?的原因   |[\s\S]的步骤较少。

答案 1 :(得分:1)

以下内容将匹配“用户名:”及其后的所有内容,但换行符除外。这包括空格。

/Username: .*/g

Demo

答案 2 :(得分:1)

您可以使用否定的前行^(?!Username:断言该字符串不是以用户名开头:然后匹配除换行符.*以外的任何字符,然后匹配0+次Unicode换行符序列{{ 1}}

使用空字符串替换。

查找内容

\R*

替换为

留空

查看regex demo

答案 3 :(得分:0)

  • Ctrl + F
  • 选择“标记”标签
  • 查找内容:^Username:\h*.+
  • 检查环绕
  • 检查正则表达式
  • 取消检查. matches newline
  • 检查书签行
  • 标记所有

说明:

^               # beginning of line
  Username:     # literally
  \h*           # 0 or more horizontal spaces
  .+            # 1 or more any character but newline

enter image description here

标记所有行之后:

  • 搜索菜单>书签
  • 删除未标记的行

enter image description here