正则表达式用于在:和之间的字符串

时间:2019-07-16 18:49:25

标签: regex

我一直在尝试获取下面这个字符串在:,之间的值

  • 字符串:key1:value1,key2:value2
  • regex:(?<=\:)[^:]*(?=\:)
  • 结果:value1,key2
  • 预期:value1,value2

有帮助吗?

2 个答案:

答案 0 :(得分:1)

[^:]*(?=\:)部分,您将不匹配:,后者将与value1,key2匹配,并且将与之过度匹配。然后,肯定的超前断言成功,因为在其后有一个:

要获得介于和之间的值,则不能匹配:,而不能匹配,,而不能匹配(?<=:)[^,]+(?=$|,) ,可以断言字符串或逗号的结尾。

(?<=:)

说明

  • :断言直接在左边的是[^,]+
  • ,匹配除(?=$|,)以外的其他任何字符1倍以上
  • ,断言直接在右边的是字符串的结尾或getHeroes(): Observable<Hero[]> { // TODO: send the message _after_ fetching the heroes this.messageService.add('HeroService: fetched heroes'); return of(HEROES); }

Regex demo

答案 1 :(得分:0)

无需先行或后退:

/:([^,]+),/g
  1. 匹配一个:
  2. 捕获不是 a ,
  3. 的一个或多个字符
  4. 匹配一个,
  5. g表示匹配字符串中的所有匹配项

此正则表达式的结果将生成两个捕获组,分别为value1value2