我需要正则表达式替换以强调我的电影列表的拳头字母...
样品:
我想从这个列表中获取
Camp (2004)
Can't Hardly Wait (1998)
Candy (2006)
Canyons, The (2014)
Daddy Day Care (2003)
Daddy and Them (2002)
Daddy's Home (2016)
Eating Out: All You Can Eat (2010)
Eddie the Eagle (2016)
Eddie (1997)
to get this
Camp (2004)
Can't Hardly Wait (1998)
Candy (2006)
Canyons, The (2014)
D
Daddy Day Care (2003)
Daddy and Them (2002)
Daddy's Home (2016)
E
Eating Out: All You Can Eat (2010)
Eddie the Eagle (2016)
Eddie (1997)
我试过这样的事情
^(\ w)之间。+ \ r \ n ^ [^ $ 1] +
找到以不同字母开头的两行(这是主要问题),但它不起作用。
有人可以帮忙吗?
答案 0 :(得分:2)
我能够使用Sublime Text实现这一目标。
你可以尝试:
^(.)(.*)\n(?!\1)
取代:
$1$2\n\n$1\n\n
修改(因为问题已被修改:字母前缀而不是后缀):
再次使用Sublime Text,我做了:
^(.)(.*)\n(?!\1)(.)
替换为:
$1$2\n\n$3\n\n$3
答案 1 :(得分:2)
这是一个在vim中运行的搜索/替换命令:
:%s/^\(.\).*\n\%(\1.*\n\)*/\1\r\r&\r/g
我们只是匹配尽可能多的以相同字母开头的行,而不是试图找到一条不以某个字母开头的行。
答案 2 :(得分:0)
感谢所有人,但我现在看到另一个问题,它在大写字母和小写字母上有所不同,它错误地打破了列表并插入了那封信。
示例:
...
...
I
Icon
IP Man
i
iPad
I
Iron Man
Ireland
....
...
但是我可以稍后手动修复它。
我更喜欢WiktorStribiżew制作的解决方案
^(\w)(.*)(\R)(?!\1)(?=\w)
替换为$1$2$3$3$1$3$3
但是根据我编辑过的问题,需要调整到以该字母开头的电影之前的正确字母。
感谢所有!!