正则表达式匹配不在引号中的单个单词/字符集

时间:2015-04-13 16:19:37

标签: c# regex

我正在寻找一个正则表达式(C#),它将匹配未被引号括起来的单词。输入字符串的示例如下:

dbo.test line_length“引用单词”notquoted

这需要匹配

dbo.test

line_length

带引号

所以3个单独的匹配和“引用的单词”不匹配。引用的短语可以是输入中的任何位置...开头,中间,结尾等。

我无法想出一个正则表达式,它匹配引号中可能有空格的引号中的单词...我已经能够匹配以下内容:hello“world”并且只能得到你好。

有没有办法编写我正在尝试的正则表达式?

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决这个问题,具体取决于您想要对输出做什么。

首先,匹配(但不捕获)引号内的任何文本。 (这是具体匹配你不想要的东西。) 使用|管道,使用捕获组选择您想要保留的所有内容。

示例:

".*?"|(\b\S+\b)

您可以看到here的示例。

另一个选项,使用环视,是从单词的开头专门向后看,以确保"不会出现在那里:

(?<!")(\b\S+\b)(?!")

您可以看到here

当您开始使用多个单词时,这可能会出现问题,但这可以让您走上正确的轨道,并且您可以指出这些方法中的一个是否比另一个更适合您。