Regex Vim正则表达式从小写字符拆分行
我试图从文本中分离标题,标题和文本的第一段是内联的Regex Vim正则表达式从小写字符拆分行,regex,vim,Regex,Vim,我试图从文本中分离标题,标题和文本的第一段是内联的 <p>GUSLÜN SÜNNETLERİ VE BAZI İNCELİKLERİ Gusle niyet ederek, Besmele ve misvâk ile başlamak. Evvelâ elleri, oyluk yerlerini yıkamak, bedende meni vesâire eseri varsa gidermek.</p> 例外的结果是 <p> <h2>GUSL
<p>GUSLÜN SÜNNETLERİ VE BAZI İNCELİKLERİ Gusle niyet ederek, Besmele ve misvâk ile başlamak. Evvelâ elleri, oyluk yerlerini yıkamak, bedende meni vesâire eseri varsa gidermek.</p>
例外的结果是
<p>
<h2>GUSLÜN SÜNNETLERİ VE BAZI İNCELİKLERİ</h2>
Gusle niyet ederek, Besmele ve misvâk ile başlamak.Evvelâ elleri, oyluk yerlerini yıkamak, bedende meni vesâire eseri varsa gidermek.</p>
GUSLÜN SÜNNETLERİVE BAZIİNCELİKLERİ
Gusle niyet ederek,Besmele ve misv–k ile başlamak,Evvel–elleri,oyluk yerlerini yıkamak,bedende meni ves–ire eseri varsa gidermek
提示:查找最后出现的大写单词,也可以帮助我。试试这个
%s!\v((<[ABCÇDEFGĞHIİJKMLMNOÖPRSŞTUÜVYZÎÂÛ]{2,}>{-1,}\s*)+)\s+(.*)$!<h2>\1</h2>\r\r\3!g
%s\v({-1,}\s*)+)\s+(.*)$\1\r\r\3!G
什么是“非unicode字符”?也许你想编辑这个问题
(.*)$
中的$
是冗余的,因为*
是贪婪的。由于您最终将\2
放在替换模式的末尾,因此可以通过根本不捕获和替换第二部分来简化命令:
:s!<pattern>!<h2>\1</h2>\r\r!
要查找一行中的最后一个大写单词,请尝试
/\v.*\zs<[A-ZÇĞİÖŞÜÎÂÛ]{2,}
:s!\v((<[A-ZÇĞİÖŞÜÎÂÛ]{2,}>{-1,}\s*)+)\s+!<h2>\1</h2>\r\r!
/\v.*\zs<[A-ZÇĞİÖŞÜÎÂÛ]{2,}
:help /\k
:help 'iskeyword'
:help /[]
:help /\zs
:help pattern