0
我想捕获指定标记对的内容,其内容可能包含空白和新行。这里有一个例子:匹配打开和关闭“标记”而不创建第二个匹配组
{section_title}
Section 1 title
with some white space
{/section_title}
我有一个正则表达式已经匹配在两个匹配组的内容,但是结果:
\{section_title\}((.|\s)*?)\{\/section_title\}
- 第1题 一些空白
- (中尾随白色空间)
变异符合内容没有创建第二个匹配组,但不允许包含嵌套标签,我希望能够允许这样做。
\{section_title\}([^\{]*?)\{\/section_title\}
有没有办法重构第一个正则表达式以避免第二个匹配组?我知道我可以删除所有“仅限白色空间”的比赛,但是想知道是否只有正则表达式。
另外,如果可能的话,我想匹配标签的替代版本:
{st}
Section 1 title
with some white space
{/st}
它可以添加在捕获组
\{(section_title|st)\}((.|\s)*?)\{\/(section_title|st)\}
的办法,但我再次想避免额外的匹配。这可能吗?
我正在使用Ruby 1.9.3。
从开关'(这个包起来。 | \ s)*''到'/ m'模式'。*'是好的,但我不会急于删除非贪婪修饰符。 '(?m){name}(。*} {/ name}'将从第一个'{name}'匹配到最后一个'{/ name}',所以如果有多个同名的段,它也会匹配如果只有一个'{name}'部分,但文档非常大,'(。*?)'会比'(。*)'快得多 –
谢谢。@Alan。我会信任的然后放回原处。事实上,我只是模糊地熟悉HTML!我做了一个错误的假设,即所有的名字都是唯一的。 –
谢谢,这真的很高雅。另外,谢谢你逐步解释过程! – aaandre