我想使用.Net Regex.Split方法将此输入字符串拆分为数组.它必须在空格上拆分,除非它包含在引号中.
输入:这是"我的字符串"它有"六个匹配"
预期产量:
我需要什么样的模式?我还需要指定任何RegexOptions吗?
我需要根据空格作为分隔符拆分下面的字符串.但是应该保留引用中的任何空格.
research library "not available" author:"Bernard Shaw"
Run Code Online (Sandbox Code Playgroud)
至
research
library
"not available"
author:"Bernard Shaw"
Run Code Online (Sandbox Code Playgroud)
我试图在C Sharp中做到这一点,我有这个正则表达式:@"(?<="")|\w[\w\s]*(?="")|\w+|""[\w\s]*"""来自SO中的另一个帖子,它将字符串拆分为
research
library
"not available"
author
"Bernard Shaw"
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这不符合我的确切要求.
我正在寻找任何正则表达式,这将成功.
任何帮助赞赏.
我希望将搜索查询标记为类似于Google的操作方式.例如,如果我有以下搜索查询:
the quick "brown fox" jumps over the "lazy dog"
Run Code Online (Sandbox Code Playgroud)
我想要一个包含以下标记的字符串数组:
the
quick
brown fox
jumps
over
the
lazy dog
Run Code Online (Sandbox Code Playgroud)
如您所见,标记用双引号保留空格.
我正在寻找一些如何在C#中执行此操作的示例,最好不使用正则表达式,但是如果这样做最有意义并且性能最高,那就这样吧.
此外,我想知道如何扩展它来处理其他特殊字符,例如,在一个术语的前面放置一个强制从搜索查询中排除等等.
我正在尝试拆分表示XPath的字符串,例如:
string myPath = "/myns:Node1/myns:Node2[./myns:Node3=123456]/myns:Node4";
Run Code Online (Sandbox Code Playgroud)
我需要拆分'/'('/'从结果中排除,就像正常的字符串拆分一样),除非'/'碰巧在'[...]'之内(其中'/'都不是分开,也包括在结果中).
那么正常的事情string[] result = myPath.Split("/".ToCharArray())让我:
result[0]: //Empty string, this is ok
result[1]: myns:Node1
result[2]: myns:Node2[.
result[3]: myns:Node3=123456]
result[4]: myns:Node4
Run Code Online (Sandbox Code Playgroud)
results[2]并result[3]应主要结合起来,我应该结束了:
result[0]: //Empty string, this is ok
result[1]: myns:Node1
result[2]: myns:Node2[./myns:Node3=123456]
result[3]: myns:Node4
Run Code Online (Sandbox Code Playgroud)
由于我不是非常流利的正则表达式,我已经尝试在拆分后手动将结果重新组合成一个新的数组,但我担心的是,尽管让它在这个例子中起作用是微不足道的,但正则表达式似乎是更好的选择.我得到更复杂的xpaths的情况.
为了记录,我查看了以下问题:正则
表达式拆分字符串保留引号
C#Regex Split - 引号外的引号
拆分具有空格的字符串,除非它们包含在"引号"中?
虽然他们应该足以帮助解决我的问题,但我遇到了一些问题/困惑的方面,阻止他们帮助我.
在前2个链接中,作为正则表达式的新手,我发现它们难以解释和学习.他们正在寻找引用,左右对之间看起来相同,所以把它翻译成[和]让我感到困惑,试错不教我任何东西,而是让我更加沮丧.我可以理解相当基本的正则表达式,但这些答案的作用比我目前理解的要多一点,即使在第一个链接中有解释.
在第三个链接中,我将无法访问LINQ,因为代码将在旧版本的.NET中使用.
我有字符串 - My name is "foo bar" I live in New York
现在我想将它拆分为一个数组,但双引号中的单词应该被视为一个.
我已经尝试input.split(' ')但需要一些帮助如何处理双引号内的字符串.
我希望输出为 ['My', 'name', 'is', '"foo bar"', 'I', 'live', 'in', 'New', 'York']
我有这样的输入文件:
aa@aa.com bb@bb.com "Information" "Hi there"
cc@cc.com dd@dd.com "Follow up" "Interview"
Run Code Online (Sandbox Code Playgroud)
我用过这个方法:
string[] words = item.Split(' ');
Run Code Online (Sandbox Code Playgroud)
但是,它会将每个单词与空格分开.我也在引号字符串中有空格但我不会拆分这些空格.
基本上我想将此输入从文件解析为此输出:
From = aa@aa.com
To = bb@bb.com
Subject = Information
Body = Hi there
Run Code Online (Sandbox Code Playgroud)
如何在C#中拆分这些字符串?