首页>Program>source

我只需要返回字符串中方括号中包含的文本.我有以下正则表达式,但这也会返回方括号:

var matched = mystring.match("\\[.*]");

字符串只能包含一组方括号,例如:

Some text with [some important info]

我希望匹配项包含"一些重要信息",而不是当前获得的" [一些重要信息]"。

最新回答
  • 2021-1-12
    1 #

    使用分组.我添加了一个 ? 制作匹配的"不舒服",因为这可能就是您想要的。

    var matches = mystring.match(/\[(.*?)\]/);
    if (matches) {
        var submatch = matches[1];
    }
    

  • 2021-1-12
    2 #

    由于javascript不支持捕获,因此您必须对其进行破解.考虑采用相反方法的替代方法.而是捕获括号内的内容,删除括号内的内容.由于只会有一组括号,因此应该可以正常工作.我通常使用这种技术来剥离前导和尾随空白。

    mystring.replace( /(^.*\[|\].*$)/g, '' );
    

  • 2021-1-12
    3 #

    您是否尝试过捕获parens:

    ("\\[(.*)]");
    

    这应该将括号内的模式作为捕获的匹配返回给返回数组

  • 2021-1-12
    4 #

    只需使用 replacemap

    "blabla (some info) blabla".match(/\((.*?)\)/g).map(b=>b.replace(/\(|(.*?)\)/g,"$1"))
    

  • 2021-1-12
    5 #

    您不能. Javascript不支持隐藏。

    您必须使用捕获组或修剪括号。

    顺便说一句,您可能不想要贪婪的 .* 在您的正则表达式中.试试这个:

    "\\[.*?]"
    

    或更妙的是,

    "\\[[^\\]]*]"
    

  • c#:NET中的锁(监控)内部实现
  • c++:如何向所有新手解释未定义的行为?