正则表达式 - 如何查找单词和引用的短语

Gra*_*zer 1 c# regex vb.net

我想要一串说下面的话:

Guiness Harp "Holy Moses"
Run Code Online (Sandbox Code Playgroud)

这样在C#或VB中得到一个匹配集:

Guiness
Harp
Holy Moses
Run Code Online (Sandbox Code Playgroud)

基本上,除非空格周围有引号,否则它会拆分空格,然后引号之间的单词被视为单个短语.

谢谢,凯文

Tim*_*ker 5

如果您在引用的字符串中没有任何(转义或加倍)引号,则可以搜索

 "[^"]*"|\S+
Run Code Online (Sandbox Code Playgroud)

但是,报价将成为比赛的一部分.如果需要,可以扩展正则表达式以处理引用字符串中的引号.

另一种(在这种情况下是优选的)可能性是使用csv解析器.

例如(Python):

import csv
reader = csv.reader(open('test.txt'), delimiter=' ', quotechar='"')
for row in reader:
    print(row)
Run Code Online (Sandbox Code Playgroud)