【问题标题】:Why doesn't the dot symbol work in this Regex?为什么点符号在这个正则表达式中不起作用?
【发布时间】:2010-08-19 20:06:52
【问题描述】:

NET 正则表达式。 (忽略大小写)

我希望它匹配

field_x_12
field_a_ABC
field_r_something

我的问题是为什么. 运算符在这个正则表达式中不起作用:

field_[.]_.*

但是这个(基本上等效的)正则表达式确实有效:

field_[a-z]_.*

点运算符. 有什么我遗漏的地方吗?

【问题讨论】:

  • 还有,“.”和 "[a-z]" 不大致等价。点通配符代表任何字符,而不仅仅是字母字符(点将匹配字母字符、数字、特殊字符、不可打印字符等)您真正想要的是“field_\w_(?:\ w|\d)*"
  • @Toby 是的,我知道,但在这种情况下,_ _ 之间除了字母字符之外永远不会有任何字符

标签: .net regex pattern-matching


【解决方案1】:

字符类 ([...]) 中的 . 是文字点字符。如果您希望它充当通配符,请不要使用方括号。

【讨论】:

  • 所以你真正想要的是 field_._.* (假设你想要一个匹配所有字符而不是只有 a-z)
【解决方案2】:

你为什么使用[.][] 表示一组明确的字符,因此 . 字符是 RegEx 正在寻找的。​​p>

field_._.*

应该可以正常工作。

请参阅 this 方便的 .NET RegEx 备忘单。

【讨论】:

    【解决方案3】:

    括号内的. 是文字点,不匹配任何字符。

    【讨论】:

      【解决方案4】:

      您应该尝试field_._.*,因为在 [] 内它被视为一个尖点。

      【讨论】:

        【解决方案5】:

        当它在字符类中时,点只是一个句点,而不是通配符。

        【讨论】:

          猜你喜欢
          • 2013-12-05
          • 1970-01-01
          • 2021-03-14
          相关资源
          最近更新 更多