我试图将标题从文本中分离出来,标题和文本的第一段是内联的。
<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>下面的regex命令只捕获第一个大写单词。由于非ascii字符(如Â, Î, Û),我需要显式地定义字符集。我使用的是!而不是正斜杠/。
%s!\v(<[ABCÇDEFGĞHIİJKMLMNOÖPRSŞTUÜVYZÎÂÛ]{2,}>{-1,})(.*)$!<h2>\1</h2>\r\r\2!g例外结果是
<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>提示:找到大写单词的最后一次出现,也能帮我。
发布于 2013-12-25 15:12:00
什么是“非unicode unicode字符”?也许你想编辑这个问题?
因为$是贪婪的,所以(.*)$中的*是多余的。由于最后将\2放在替换模式的末尾,所以可以通过根本不捕获和替换第二部分来简化命令:
:s!<pattern>!<h2>\1</h2>\r\r!(最后的g标志也是多余的。)
如果您正确设置'iskeyword',那么\k将正确匹配单词字符,但不幸的是,\u忽略了此设置,只顽固地匹配ASCII大写字母。但是您可以将字符类简化为[A-ZÇĞİÖŞÜÎÂÛ] (除非排除Q、W和X是很重要的)。通过这些简化,rednaw的答案变成了
: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发布于 2013-12-25 13:36:47
试试这个
%s!\v((<[ABCÇDEFGĞHIİJKMLMNOÖPRSŞTUÜVYZÎÂÛ]{2,}>{-1,}\s*)+)\s+(.*)$!<h2>\1</h2>\r\r\3!ghttps://stackoverflow.com/questions/20773198
复制相似问题