首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正则表达式以获取大括号之间的字符串

正则表达式以获取大括号之间的字符串
EN

Stack Overflow用户
提问于 2009-01-05 13:21:34
回答 15查看 296.2K关注 0票数 137

不幸的是,尽管在我的记忆中,我每年至少学习一次正则表达式,但我总是忘记,因为我很少使用它们。今年我的新年计划是不再尝试学习正则表达式--所以今年为了让我不流泪,我把它放到了Stack Overflow上。(去年圣诞节混音)。

我想传入一个格式为{getThis}的字符串,然后返回字符串getThis。有人能帮助我坚持我的新年决心吗?

Stack Overflow的相关问题:

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-01-05 13:25:56

如果字符串始终采用这种格式,那么正则表达式就显得有些多余了:

代码语言:javascript
复制
>>> var g='{getThis}';
>>> g.substring(1,g.length-1)
"getThis"

substring(1表示从一个字符开始(恰好在第一个{之后),,g.length-1)表示使用字符,直到(但不包括)字符串长度减1为止。这是因为位置是从零开始的,即g.length-1是最后一个位置。

对于原始海报以外的读者:如果必须是正则表达式,则如果您希望允许空字符串,则使用/{([^}]*)}/;如果您希望仅在花括号之间至少有一个字符时匹配,则使用/{([^}]+)}/。细目:

  • /:开始正则表达式模式
    • {:文字大括号
      • (:开始捕获
        • [:开始定义一个字符类来捕获
          • ^}:“}"

以外的任何东西”

代码语言:javascript
复制
        - `]`: OK, that's our whole class definition
        - `*`: any number of characters matching that class we just defined

代码语言:javascript
复制
    - `)`: done capturing

代码语言:javascript
复制
- `}`: a literal curly brace must immediately follow what we captured

end

  • /:regex pattern
票数 66
EN

Stack Overflow用户

发布于 2009-01-05 13:24:13

试一试

代码语言:javascript
复制
/{(.*?)}/

这意味着,匹配{和}之间的任何字符,但不要贪婪-匹配以}结尾的最短字符串(?停止*贪婪)。括号允许您提取匹配的部分。

另一种方法是

代码语言:javascript
复制
/{([^}]*)}/

这匹配除} char之外的任何字符(不贪婪的另一种方式)

票数 266
EN

Stack Overflow用户

发布于 2009-01-05 13:59:44

代码语言:javascript
复制
/\{([^}]+)\}/

/        - 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
票数 157
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/413071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档