c# - 如果捕获组不存在,返回空字符串?

标签 c# .net regex

应用正则表达式 .*/(?<X>.*?(?<Rev>\#rev#.*?))\$(?<YM>\d{6})\.到以下字符串

    /ABC$201808.csv
    /ABC#Rev#123$201808.csv

只匹配并捕获第二个字符串

    /ABC#Rev#123$201808. has 3 groups:
      ABC#Rev#123 (X)
      #Rev#123 (Rev)
      201808 (YM)

对于/ABC$201808.csv的第一个字符串,我想捕获以下值( Rev 应该得到空字符串)。

      ABC(X)
      (Rev)
      201808 (YM)

这可能吗?

最佳答案

您缺少一个 ?<Rev> 之后的正则表达式中分组。应该是.*/(?<X>.*?(?<Rev>\#rev#.*?)?)\$(?<YM>\d{6})\.为了匹配两个字符串。

关于c# - 如果捕获组不存在,返回空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52337511/

相关文章:

c# - NUnit 相当于 JUnit 的规则

C# IL - 调用构造函数

c# - 当从 C# 中的动态获取属性时,如何检查枚举属性?

c# - String对象真的是通过引用吗?

javascript - 重写此正则表达式而不使用 lookbehind - JS 的正则表达式无效

c# - 重载相等运算符时,处理空值的最佳方式是什么?

c# - 嵌套数组属性上的 Mongo C# 强类型索引

Javascript 正则表达式困难

JavaScript 正则表达式匹配法国车牌

c# - 关于C#接口(interface)的问题