我正在尝试创建一个正则表达式来匹配编号列表之间的内容,例如具有以下内容:
1)第1部分的文字 2)第2部分的文字 3)第3部分的文本
答案 0 :(得分:2)
以下PCRE应该可以正常工作,假设你没有在章节中有任何格式化为“1)”之类的东西:
\d+\)\s*(.*?)\s*(?=\d+\)|$)
说明:
\d+\)
会给出一个数字,然后是)
。\s*
匹配前面的空格。(.*?)
非贪婪地捕获内容。\s*
匹配尾随空格。(?=\d+\)|$)
确保匹配后跟新部分的开头或文本的结尾。注意,它并不强制它们必须是升序或类似的东西,所以它也匹配以下文本:
4) Hello there 1) How are you? 5) Good.
答案 1 :(得分:0)
我建议如下(PCRE):
(?:\d+\)\s*(.*?))*$
内部\d+\)\s*
匹配列表编号和右括号,后跟可选的空格。
(.*?)
匹配列表文本,但是以非贪婪的方式(否则,它也会匹配下一个列表项)。
封闭的(?: )*$
然后匹配上述零次或多次,直到输入结束。
答案 2 :(得分:0)
你应该记住数字后面的文字和括号可能是任何文字,这会找到你的子串:
\d\).+?(?=\d\)|$)
编辑:
要删除空格并仅返回没有数字的文本,请从以下匹配中获取组1:
\d\)\w*(.+?)(?=\d\)|$)
要获取组(1)中的数字和组(2)中的文本,请使用:
(\d)\)\w*(.+?)(?=\d\)|$)