怎样用正则匹配一行中某一段的所有符合条件字符?

怎样用正则匹配一行中某一段的所有符合条件字符?

不太好说清楚,直接上例子吧
对于这样一行文本:

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

回到顶部