>我有这样的文字
一:_c
答:_c
我正在使用的正则表达式是/:(.*)/g
,但它也捕获了":_">
我想实现-->c
我得到了什么-->:_c
如何排除它们?
P.S.:用下划线代替空格,便于理解。
编辑:我想捕获":"后面的所有内容
EDIT2:这是带有文本的正则表达式,如您所见,它还捕获了":
如果您知道下划线将始终位于c
前面,则可以这样做:/:_?(.*)/g
_?
匹配 0 或 1 下划线,因此您只会得到c
。
console.log('a b:_c'.match(/:_?(.*)/)[1])
你想得到字符串"c"还是最后一个字符?
var a = "a:_c a b:_c";
/c/g.exec(a)
/.$/g.exec(a)
编辑以匹配评论:
使用以下命令删除":_"之前的所有内容,包括":_">
a.replace(/.*:_*/, '')
对于空间:
a.replace(/.*:s*/, '')
您可以使用:/:s(.*)/g
.
这将在开始捕获之前:
后捕获单个空格:
a b: c => "c"
a: c => "c"
var re = /:s(.*)/;
var tests = [
'a: c',
'a: cat',
'b a: test',
'a: c',
'Test: this is the rest of the sentence',
];
for (var i = 0; i < tests.length; i++) {
console.log('TEST: ', '"' + tests[i] + '"');
console.log('RESULT: "' + tests[i].match(re)[1] + '"');
}
注意:您必须从匹配中获取第一个捕获组。否则,您将无法获得预期的结果。请参阅如何在 JavaScript 正则表达式中访问匹配的组?以获取有关如何执行此操作的信息。