【问题标题】:Rearrange name formats in notepad++ using regular expressions?使用正则表达式在记事本++中重新排列名称格式?
【发布时间】:2017-01-30 12:07:46
【问题描述】:

我有一个用逗号分隔的名字列表,名字的格式是姓氏,后跟名字和中间名,像这样

Parameshwar S、Goutami、Patil D B

我想使用正则表达式来查找和替换,以便我的输出如下所示,名字中间名和姓氏S Parameshwar,Goutami,DB Patil

【问题讨论】:

  • 你试过什么?什么不起作用,错误的结果是什么?查找有关在正则表达式替换操作中使用 捕获组 的基本教程。

标签: regex replace notepad++


【解决方案1】:

使用正则表达式 ([a-zA-Z]+) +([a-zA-Z][^\n\r,]*)(?=$|,) 查找并替换为 \2 \1

https://regex101.com/r/qH6rL9/2查看结果。

简而言之,这就是正则表达式的作用

([a-zA-Z]+):(第 1 组)一堆字母
+:后跟至少一个空格
([a-zA-Z][^\n\r,]*):(第 2 组)后跟以字母开头,然后跟非-newlines-non-commas
(?=$|,): 直到你遇到一个位置,要么是行尾,要么是逗号

第 1 组是姓氏,第 2 组是姓名的其余部分。

【讨论】:

  • 不错的正则表达式和用法
  • 一点更新。似乎 Notepad++ 可能会将换行符与[^,]+ 匹配,并且最后一个前瞻组中的捕获组实际上是多余的。我已经稍微更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多