在本文中:
my-Word: Value-1
othertext
my-Word: Value-2
othertext
my-Word: Value-3
...
我需要匹配包含([A-Za-z0-9-]+)
仅在字符串my-Word:
之后,但不包括:my-Word:
所以我只需匹配:Value-1
,Value-2
,Value-3
等。
我该怎么做?
答案 0 :(得分:1)
你可以使用积极的lookbehind:
(?<=my-Word:\s*)([A-Za-z0-9-]+)
答案 1 :(得分:0)
使用捕获组捕获紧随my-Word:
> var s = "my-Word: Value-1\nothertext\nmy-Word: Value-2\nothertext\nmy-Word: Value-3"
undefined
> var re = /my-Word:\s*([A-Za-z0-9-]+)/gm;
undefined
> var m;
undefined
> while ((m = re.exec(s)) != null) {
... console.log(m[1]);
... }
Value-1
Value-2
Value-3
答案 2 :(得分:0)
您必须使用 lookbehind 正则表达式,例如:
.(?<=my-Word: [A-Za-z0-9-])[A-Za-z0-9-]+
但遗憾的是,javascript不支持lookbehind,所以你可以使用 lookahead 正则表达式。为此你需要首先反转原始字符串,最后是匹配的部分:
[A-Za-z0-9-]+(?= :droW-ym)