我想提取输入短语内的所有双引号短语,并保持不匹配的元素作为单词
假设我有“销售人员”,我希望输出是:
sales people
ITinput="SO \“销售经理\”营销\“管理\”“也是如此。”“
输出为:
SO
sales manager
marketing
managementif input ="SO \“销售经理\”营销管理\“保险”
输出为:
SO
sales manager
marketing
management
insurance我找到了正则表达式:但我不知道如何提取:
string InputText="SO \"sales manager\" marketing \"management\"" ;
string pattern0 = "^\"(.*?)\"$";
string pattern = "^(.*?)\"(.*?)\"(.*?)$";
Regex regex = new Regex(pattern);
string[] temOperands;
bool isMatch = regex.IsMatch(InputText);
if (isMatch)
{
//here goes the extraction
}发布于 2012-04-09 21:27:31
我认为你需要像"(?<word>[^"]+)"|(?<word>\w+)这样的东西。这将匹配双引号中的文本和单字:
var str = @"SO ""sales manager"" marketing hello ""management""";
var regex = new Regex(@"""(?<word>[^""]+)""|(?<word>\w+)");
var words = regex.Matches(str)
.Cast<Match>()
.Select(m => m.Groups["word"].Value)
.ToArray();对于测试字符串,这将返回:
SO
sales manager
marketing
hello
management发布于 2012-04-09 21:26:16
输入字符串在双引号内只有两个单词"Sales manager“和"marketing”。下面的代码可以提取双引号内的字符串。
ArrayList arr = new ArrayList();
int x1 ;
int nextPos=0;
x1 = InputText.IndexOf('\"', 0) +1 ;
while (x1 != -1)
{
if (x1 >= 0)
{
nextPos = InputText.IndexOf('\"',x1);
arr.Add(InputText.Substring(x1, nextPos - x1));
}
nextPos++;
x1 = InputText.IndexOf('\"', nextPos) + 1;
}发布于 2012-04-09 20:43:07
可以使用'replace‘
string InputText="SO \"sales manager\" marketing \"management\"" ;
InputText=InputText.Replace("\"","\n");在输出中,你将得到你想要的东西。
https://stackoverflow.com/questions/10073061
复制相似问题