C# - 正则表达式在空格上拆分字符串,除非遇到双引号

Tar*_*ara 5 c# regex

这个线程与我想要的非常相似:正则表达式在空格上分割,除非用引号括起来

但是我需要一些我无法弄清楚的额外规则: - 上面的线程确实在空格上分割,除非它们是双引号.但是,它也会在标点符号上分开.我需要双引号内的任何东西保持为一个实体.

例如:
/ Update setting0 value ="new value"/ Save 应返回
/更新
setting0
value =
new value (我不关心它是否修剪报价)
/ Save

/导入"C:\ path\file.xml""C:\ path_2\file_2.xml"/退出应该返回
/导入
C:\ path\file.xml (我不在乎它是否关闭了引号)
C:\ path_2\file_2.xml
/ Exit

我最终使用上面的线程中的这个表达式:

(?<=")\w[\w\s]*(?=")|\w+|"[\w\s]*"
Run Code Online (Sandbox Code Playgroud)

有人可以帮我调整一下吗?谢谢!

MPę*_*ski 3

我还没有在 C# 中尝试过,但在 Excel 中尝试过 VBA,但它可能会有所帮助。我也将双引号更改为单引号。无论如何,这是正则表达式

文本:

/更新设置0值='新值'/保存

正则表达式:

('{1}(\w|\s|:|\\|\.)+'{1}|\w)+
Run Code Online (Sandbox Code Playgroud)

结果:

更新

设置0

价值

“新价值”

节省

文本:

/导入 'C:\path\file.xml' 'C:\path_2\file_2.xml' /退出

结果:

进口

'C:\路径\文件.xml'

'C:\path_2\file_2.xml'

出口