【问题标题】:What is any character (including new line) pattern in regex?正则表达式中的任何字符(包括换行符)模式是什么?
【发布时间】:2014-05-20 05:43:12
【问题描述】:

正则表达式是否有匹配任何字符的模式,包括正则表达式中的换行符? dot 模式匹配任何字符,但不包括换行符,(目前,我使用[^~],因为~ 字符很少使用)。

编辑:我正在使用 regexC# 语言。

【问题讨论】:

  • 正则表达式的哪种方言——或者哪种宿主语言?
  • @JonathanLeffler:我使用regexC#,我不知道regex 的C# 实现是否与原始正则表达式有任何不同
  • 是的; C# 中的正则表达式和“原始正则表达式”之间存在很多差异——但除了 ed 编辑器使用原始正则表达式之外几乎没有任何区别。哦,还有普通的香草grep。在询问正则表达式时,指定宿主语言很重要,因为在 C# 中有效的内容可能不适用于 PHP、Perl、Tcl/Tk、Python、Ruby、C、C++、grepgrep -Eseded、Java 等,反之亦然。
  • 哈哈,我虽然是perl ...
  • @JonathanLeffler:感谢您提供有趣的信息。那么是否有一种模式可以匹配任何字符,包括适用于 C# 正则表达式实现的换行符?

标签: c# regex


【解决方案1】:

使用 #C,您可以使用 RegexOptions.Singleline 编译器标志。

使用单行模式,其中 (.) 匹配每个字符(而不是除 \n 之外的每个字符)

除了 RegexOptions.Singleline 编译器标志,您可以通过在正则表达式的最开头放置一个内联修饰符来获得相同的效果。

Regex.Match(input, @"(?s)foo.*bar");

【讨论】:

    【解决方案2】:

    我不熟悉 C#,但我确信正则表达式在任何地方都一样。

    .* 匹配任何字符,对,\n 除外。一个简单的方法是通过使用捕获组来超越它:(.|\n)*(.|\n|\r)*,或者您可以使用[\s\S] 来超越此限制,其中\s 是任何空格,\S 是任何非空格。我相信某些语言 [^] 也可以,但不了解 C#。基本上它说不匹配任何东西,所以它会匹配任何东西。

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 2017-02-26
      • 2016-07-14
      • 2023-03-31
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多