如何只拍一组并进行两次拍摄

时间:2019-03-20 14:28:40

标签: regex

我有这样的东西

  

日期;数字;标签;借方;信用;更多;

我尝试使正则表达式与日期,标签,借方或贷方分组

有一个例子:

  

Date; Number; Label; Debit ;; more;

但可能是:

  

日期;数字;标签;;信用;更多;

所以我尝试仅获得3组(不能在同一行上是贷方和借方)

我尝试了一下,但是没有用:

(.*);(?:.*);(.*);{1,2}(.*);{1,2}(?:.*);

2 个答案:

答案 0 :(得分:0)

一个选项可能是使用3个捕获组。如果比赛在第三组的左边,你可以用一个组和一个比赛来捕捉;使用否定的character class

如果匹配项在右侧,则可以首先匹配可选的分号:

^([^;]*);[^;]*;([^;]*);;?([^;]*)
  • ^字符串的开头
  • ([^;]*);组1-先匹配;,然后匹配;
  • [^;]*;没有分组,不匹配;然后;
  • ([^;]*);第2组-先匹配;,然后匹配;
  • ;?([^;]+)第3组,匹配可选的半冒号,然后捕获不匹配;的组

Regex demo

如果在分号之间也不允许任何内容,则可以改用[^;]*

答案 1 :(得分:0)

您不应该使用AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: process.env.IdentityPoolId, Logins: { 'xxxxxxxxx': val.token } }) ,因为它匹配任何字符并且您不想匹配分号,而应使用.*,它匹配除分号之外的所有字符。

生成的正则表达式为[^.]*

请参见here