【发布时间】:2014-05-16 19:19:38
【问题描述】:
我想捕获指定标记对的内容,该内容可能包括空格和换行符。这是一个例子:
{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。
【问题讨论】: