如何匹配任何文本到最后一个逗号?

时间:2014-07-16 20:39:48

标签: regex

我正在尝试匹配以下行中的所有文字

is a frozen account. To create / edit transactions against this account, you need role,

使用此正则表达式排除最后一个逗号

.*?[,]

但是这会给出以下匹配

is a frozen account. To create / edit transactions against this account,

you need role,

我在这里缺少什么?

3 个答案:

答案 0 :(得分:3)

尝试贪婪的方式尽可能匹配

.*,
  

我需要从匹配中排除最后一个逗号

尝试使用Positive Lookahead

.*(?=,)

DEMO

答案 1 :(得分:1)

使用此功能(请参阅the regex demo):

.*(?<!,)

<强>解释

  • .*匹配整个字符串
  • 负面的后视(?<!,)断言前面的内容不是逗号,强制引擎在需要时回溯

答案 2 :(得分:0)

您可以使用此基于前瞻性的正则表达式来匹配文本,直到最后一个逗号:

.*?,(?![^,]*,)