【问题标题】:C# string pattern in regex正则表达式中的 C# 字符串模式
【发布时间】:2015-08-02 11:15:08
【问题描述】:

C# 字符串在正则表达式中的模式是什么?我的意思是一些匹配 Visual Studio 识别为 string

的任何模式

这种模式是我尝试过的,但并非在所有情况下都有效:

"[A-z0-9\\+;"]+"

(当然这还不完整,还有很多字符应该被包括在内,但即使在这里它也不能正常工作)

它适用于这样的文本:"kla\"+;s",但在这种情况下:"a\"b + c" 它只匹配"a\"

实际上,我有更多的睾丸,但没有一个成功。

首先我想到了这种模式:".*" 在这样的场景中无法正常工作:"a\"+;b" + "a\"b + c" 实际上不是字符串,而是两个单独的字符串和一个加号运算符

【问题讨论】:

  • 您想匹配双引号内的所有字符吗?提供一个实际的字符串以及预期的输出。
  • 在字符集中你不需要使用转义字符。 [A-z0-9\+;"]+ 的工作原理相同。此正则表达式将匹配所有字母和数字,以及反斜杠+;"。这就是你想要的吗?
  • @Flipybitz,实际上不是。我没有转义那些字符,我已经转义了这个字符'\'。
  • 啊,我明白你想要完成什么,我错了。

标签: c# regex


【解决方案1】:

匹配所有双引号块。

@"(?<!\\)"".*?(?<!\\)"""

DEMO

说明:

  • (?&lt;!\\)"negative lookbehind 断言匹配 " 前面不能有反斜杠。在 C# 中,double "" 表示单个双引号。另一个" 仅用于转义目的。所以这确保了起始双引号不能是转义的。

  • .*? 非贪婪模式,非贪婪地匹配所有字符直到

  • (?&lt;!\\)" 发现一个未转义的双引号。

【讨论】:

  • 您的解决方案涵盖的范围比我的要多,删除了我的帖子。如果我没有达到投票上限,我会支持你的:)
  • 酷,太棒了,但你能解释一下,或者给我介绍一些链接来阅读它吗? (阅读您使用过的正则表达式:)我以前从未见过这样的东西)
猜你喜欢
  • 2015-11-28
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多