匹配并捕获方括号内的(大写)字母
Match and capture the (capital) letters inside the square brackets
我对正则表达式还很陌生,我想知道匹配和捕获方括号内字母的模式。例如,我想从下面的字符串中捕获数据。我的示例代码如下:
var myString = "testing/node/234 test_TEST [1234] testing [DATA] SUMMARY,VALUES,abcd,1,0,0";
var re = new RegExp("\[([A-Z]+)\]");
var match = re.exec(myString);
console.log(match[1]);
它给我一个语法错误:* Unmatched ')' * 在第二行。
尝试使用:
\[([A-Z]+)\]
只捕获大写字母的括号。
Two 将两个或多个字符串匹配到括号中,使用/g
进行全局选择。
根据测试字符串的相似程度以及您希望正则表达式的严格程度,您有多种选择,从不太严格到更严格:
只需匹配方括号之间的内容:
\[(.+)\]
在这种情况下,您可能需要一个非贪婪的正则表达式。因为如果括号之间有 2 个不同的东西,例如[AB] some text [CD]
它将捕获 AB] some text [CD
。非贪婪标志将阻止这种情况。
匹配右括号后的方括号和space:
\)\s\[(.+)\]
匹配恰好3个单词后的方括号:
(?:[^\s]+\s){3}\[(.+)\]
您仍然可以根据需要更加严格,但您明白了。
更严格的正则表达式 将防止意外匹配您没有预料到的内容。例如,如果 test_module
本来是 [test_module]
,则第一个正则表达式会匹配它,而其他两个则不会。
当字符串完全或部分由用户输入组成时,这一点尤为重要。永远不要相信用户 ;)
我认为 "best" 的方法是回顾和展望
(?<=\[)[A-Z]+?(?=\])
这也将避免选择括号
或者也许:
\[([A-Z]+?)\]
味道更有限
我对正则表达式还很陌生,我想知道匹配和捕获方括号内字母的模式。例如,我想从下面的字符串中捕获数据。我的示例代码如下:
var myString = "testing/node/234 test_TEST [1234] testing [DATA] SUMMARY,VALUES,abcd,1,0,0";
var re = new RegExp("\[([A-Z]+)\]");
var match = re.exec(myString);
console.log(match[1]);
它给我一个语法错误:* Unmatched ')' * 在第二行。
尝试使用:
\[([A-Z]+)\]
只捕获大写字母的括号。
Two 将两个或多个字符串匹配到括号中,使用/g
进行全局选择。
根据测试字符串的相似程度以及您希望正则表达式的严格程度,您有多种选择,从不太严格到更严格:
只需匹配方括号之间的内容:
\[(.+)\]
在这种情况下,您可能需要一个非贪婪的正则表达式。因为如果括号之间有 2 个不同的东西,例如
[AB] some text [CD]
它将捕获AB] some text [CD
。非贪婪标志将阻止这种情况。匹配右括号后的方括号和space:
\)\s\[(.+)\]
匹配恰好3个单词后的方括号:
(?:[^\s]+\s){3}\[(.+)\]
您仍然可以根据需要更加严格,但您明白了。
更严格的正则表达式 将防止意外匹配您没有预料到的内容。例如,如果 test_module
本来是 [test_module]
,则第一个正则表达式会匹配它,而其他两个则不会。
当字符串完全或部分由用户输入组成时,这一点尤为重要。永远不要相信用户 ;)
我认为 "best" 的方法是回顾和展望
(?<=\[)[A-Z]+?(?=\])
这也将避免选择括号
或者也许:
\[([A-Z]+?)\]
味道更有限