怎样用正则匹配一行中某一段的所有符合条件字符?
不太好说清楚,直接上例子吧
对于这样一行文本:
l = "have(message, 'aaa-bbb', 'ccc-ddd') && have(outcome, 'access-accepted')"
假如我想匹配have(message,...)中的"aaa-bbb"和"ccc-ddd", 不要匹配have(outcome,...)中的字符,应该怎么写呢?
1.
re.findall("(\w+(?:\-\w+)+)", l)
是不行的,因为会匹配到have(outcome,...)里的字符
2.
re.findall("have\(message,\s*[^\)]*?(\w+(?:\-\w+)+)", l)
这个也不行,只能匹配到第一个
3.
re.findall("have\(\message\(?:,\s*\'(.+?)\'\s*)+\s*\)",l)
这样也不行,也是只能到匹配第一个
实在想不出什么办法了, 有大神知道吗?
回答:
var str = "have(message, 'aaa-bbb', 'ccc-ddd') && have(outcome, 'access-accepted') && have(message, '更', '多')"function getKeys (str) {
var arr = []
str.replace(/have\( ?message[^()]*\)/g, function (g) {
g.replace(/,[^,)]*/g, function (a) {
arr.push(a.replace(/, |,|'|"/g, ''))
})
})
return arr
}
console.log(getKeys(str)); // => ["aaa-bbb", "ccc-ddd", "更", "多"]
以上是 怎样用正则匹配一行中某一段的所有符合条件字符? 的全部内容, 来源链接: utcz.com/a/163969.html