不幸的是,尽管在我的记忆中,我每年至少学习一次正则表达式,但我总是忘记,因为我很少使用它们。今年我的新年计划是不再尝试学习正则表达式--所以今年为了让我不流泪,我把它放到了Stack Overflow上。(去年圣诞节混音)。
我想传入一个格式为{getThis}
的字符串,然后返回字符串getThis
。有人能帮助我坚持我的新年决心吗?
Stack Overflow的相关问题:
发布于 2009-01-05 13:25:56
如果字符串始终采用这种格式,那么正则表达式就显得有些多余了:
>>> var g='{getThis}';
>>> g.substring(1,g.length-1)
"getThis"
substring(1
表示从一个字符开始(恰好在第一个{
之后),,g.length-1)
表示使用字符,直到(但不包括)字符串长度减1为止。这是因为位置是从零开始的,即g.length-1
是最后一个位置。
对于原始海报以外的读者:如果必须是正则表达式,则如果您希望允许空字符串,则使用/{([^}]*)}/
;如果您希望仅在花括号之间至少有一个字符时匹配,则使用/{([^}]+)}/
。细目:
/
:开始正则表达式模式{
:文字大括号(
:开始捕获[
:开始定义一个字符类来捕获^}
:“}
"以外的任何东西”
- `]`: OK, that's our whole class definition
- `*`: any number of characters matching that class we just defined
- `)`: done capturing
- `}`: a literal curly brace must immediately follow what we captured
end
/
:regex pattern发布于 2009-01-05 13:24:13
试一试
/{(.*?)}/
这意味着,匹配{和}之间的任何字符,但不要贪婪-匹配以}结尾的最短字符串(?停止*贪婪)。括号允许您提取匹配的部分。
另一种方法是
/{([^}]*)}/
这匹配除} char之外的任何字符(不贪婪的另一种方式)
发布于 2009-01-05 13:59:44
/\{([^}]+)\}/
/ - delimiter
\{ - opening literal brace escaped because it is a special character used for quantifiers eg {2,3}
( - start capturing
[^}] - character class consisting of
^ - not
} - a closing brace (no escaping necessary because special characters in a character class are different)
+ - one or more of the character class
) - end capturing
\} - the closing literal brace
/ - delimiter
https://stackoverflow.com/questions/413071
复制相似问题