非常简单的特定字符串的正则表达式代码

时间:2011-09-14 17:28:48

标签: regex

我讨厌提出具体问题,但我需要正则表达式代码来匹配字符串,如:

{block any_single_word_here}
    Anything Here
{/block}

3 个答案:

答案 0 :(得分:3)

你的原始查询非常接近,虽然有点冗长。它可以缩写为:

/{block (.+?)}(.+?){\/block}/

?修饰符可使+停止“贪婪”,因此您无需在下一个}{明确停止匹配。 )

接下来,您必须考虑默认情况下.与新行不匹配。您可以使用/s标志更改此内容:

/{block (.+?)}(.+?){\/block}/s

Here's a demo.

这里是the documentation from man perlre

  

<强>取值

     

将字符串视为单行。也就是说,更改“.”以匹配任何字符,即使是换行符,通常也不匹配。

答案 1 :(得分:0)

这可以胜任吗?

/\{block \w+\}\r?\n.*?\r?\n\{\/block\}/i

答案 2 :(得分:0)

在javascript中(将转义添加到原始字符串中的行尾)我向正则表达式添加了\s*(零个或多个空格),并输出any_single_word_hereAnything Here的匹配项细...

alert( "{block any_single_word_here}\
    Anything Here\
{/block}".match(/\{block ([^\}]+)\}\s*([^\{]+)?\{\/block}/) )

对于更简单的正则表达式,请删除不必要的转义,然后使用.而非复杂[^\}]

进行捕获
/{block (.+)}\s*(.+){\/block}/