【问题标题】:C# Regular Expression regex to match characters in last group, but not empty groupC#正则表达式正则表达式匹配最后一组中的字符,但不是空组
【发布时间】:2015-03-10 13:57:56
【问题描述】:

请任何人给我一个解决方案,让我的正则表达式匹配以下数据行...

0002,Area (Region Name),No value
0003,Area (Region Name),Up North

...但应该在这一行失败(由于最后一组为空)

0001,Area (Region Name),

我现在的表达是:

(?<BRANCH_CODE>[a-zA-Z0-9]{1,8}),(?<UDA_NAME>[a-zA-Z0-9!"\£\$\%\^\&\*\(\)\-+_ /]{1,50}),(?<UDA_VALUE>[a-zA-Z0-9!"\£\$\%\^\&\*\(\)\-+_ /]{1,50})

...在 Expresso 中可以正常工作,但在我的 C# 代码中不行

任何帮助表示赞赏。谢谢。

没有帮助的参考: Regular expression matches an extra empty group

【问题讨论】:

  • ""替换"
  • 我无法重现您的结果 (demo)。您所做的与演示中的内容有什么不同吗?我复制了你的正则表达式和输入字符串。
  • 点击@AvinashRaj。你想把它作为答案发布,以便我可以标记它吗?
  • 所以你不想匹配0001,Area (Region Name), ?如果您也想匹配此行,请使用此regex101.com/r/rJ6vV1/5
  • @AvinashRaj - 不,我需要拒绝该行,因为最后一组是空的,所以应该无法通过验证。所以你的第一个答案很有魅力。谢谢。

标签: c# regex string capture-group


【解决方案1】:

转义所有双引号。

@"(?<BRANCH_CODE>[a-zA-Z0-9]{1,8}),(?<UDA_NAME>[a-zA-Z0-9!""\£\$\%\^\&\*\(\)\-+_ /]{1,50}),(?<UDA_VALUE>[a-zA-Z0-9!""\£\$\%\^\&\*\(\)\-+_ /]{1,50})"

【讨论】:

    【解决方案2】:

    表达式看起来正确,但我会确保您的表达式中有一个开始和结束字符,或者它可能在字符串中匹配。

    ^(?<BRANCH_CODE>[a-zA-Z0-9]{1,8}),(?<UDA_NAME>[a-zA-Z0-9!"\£\$\%\^\&\*\(\)\-+_ /]{1,50}),(?<UDA_VALUE>[a-zA-Z0-9!"\£\$\%\^\&\*\(\)\-+_ /]{1,50})$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      相关资源
      最近更新 更多