我怎样才能使用 JavaScript 中的正则表达式从以下句子的两个括号中提取出单词
my
?
(译者注:正则表达式是一种用来匹配、查找和操作文本的工具,使用它可以更方便地处理字符串。)"This is (my) simple text"
my
?
(译者注:正则表达式是一种用来匹配、查找和操作文本的工具,使用它可以更方便地处理字符串。)"This is (my) simple text"
console.log(
"This is (my) simple text".match(/\(([^)]+)\)/)[1]
);
\(
表示开始大括号,(
表示子表达式的开始,[^)]+
表示除了右括号之外的任何字符出现一次或多次(你可能需要用 *
替换 +
),)
表示子表达式的结束,\)
表示结束大括号。函数 match()
返回数组 ["(my)","my"]
,从中提取第二个元素。
var txt = "This is (my) simple text";
re = /\((.*)\)/;
console.log(txt.match(re)[1]);
你也可以尝试一种非正则表达式的方法(当然,如果有多个这样的括号,最终需要循环或者使用正则表达式)
init = txt.indexOf('(');
fin = txt.indexOf(')');
console.log(txt.substr(init+1,fin-init-1))
txt.substring(init + 1, fin)
。 - Ry-[^()]
,但是是否正确也不清楚。
而且,不仅仅是性能,而是关于使用正则表达式做所有事情的普遍趋势,如果您添加了一些检查,我会点赞您的答案;-) - Michael Krelin - hackerfin < init
看起来不像是正确的做法。你可以 (a) 从开头开始搜索关闭括号,(b) 找到最后一个关闭括号,(c) 无论人们想出什么方法 ;-) - Michael Krelin - hackervar testString = "(Charles) de (Gaulle), (Paris) [CDG]"
var reBrackets = /\((.*?)\)/g;
var listOfText = [];
var found;
while(found = reBrackets.exec(testString)) {
listOfText.push(found[1]);
};
使用此方法获取最接近的 (
和 )
之间的文本:
const string = "This is (my) (simple (text)"
console.log( string.match(/\(([^()]*)\)/)[1] )
console.log( string.match(/\(([^()]*)\)/g).map(function($0) { return $0.substring(1,$0.length-1) }) )
结果:my
和 ["my","text"]
。
解释
--------------------------------------------------------------------------------
\( '('
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
[^()]* any character except: '(', ')' (0 or
more times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
\) ')'
var txt = "{{abctext/lsi)}} = {{abctext/lsi}} + {{adddddd}} / {{ttttttt}}";
re = /\{{(.*?)\}}/g;
console.log(txt.match(re));
使用圆括号返回多个项
var res2=str.split(/(|)/);
var items=res2.filter((ele,i)=>{
if(i%2!==0) {
return ele;
}
});
.+?
代替[^)]+
。 - Ry-.match(/\{(.+?)\}/g)
。 - Stefan