正则表达式解析'之间的文本'

时间:2013-01-11 14:40:21

标签: c# regex

我有以下文字:

  1. 向BizTalk发送请求。 CaseID:'2011000264',标题:'ArchiveDocument Poup - fields.docx',日期:'11 .01.2013 13:15:28'
  2. 向BizTalk发送请求。标题:'Jallafields.docx',日期:'11 .01.2013 13:15:28'
  3. 现在我想解析Title。我知道这应该是非常简单的,但我很挣扎,所以任何帮助都会非常受欢迎。

4 个答案:

答案 0 :(得分:4)

将您的文字与以下内容匹配:

\bTitle: '([^']+)'

并捕获第一组。

当然,这假设没有嵌入的单引号...如果有,请使用normal* (special normal*)*“正则表达式模式”(如下所示)(此示例假设此类嵌入式引号使用反斜杠进行转义):

\bTitle: '([^\\']+(?:\\'[^\\']*)*)'

此处,normal[^\\'](除了反斜杠或单引号外),special\\'(反斜杠后跟单引号)。这是经常使用(过度使用?)懒惰量词不能做的事情;)

答案 1 :(得分:3)

只是为了一些正则表达式/ LINQ乐趣:

var s = "Send Request to BizTalk. CaseID: '2011000264', Title: 'ArchiveDocument Poup - fields.docx', Date: '11.01.2013 13:15:28'"   ;
var d = Regex.Matches(s, @"(?<=[\W])(\w*):\W'([^']*)'").OfType<Match>().ToDictionary (m => m.Groups[1].Value, m=>m.Groups[2].Value);

d现在

enter image description here

J̶u̶s̶t̶̶h̶o̶̶̶̶̶̶̶̶̶̶̶̶'̶̶̶̶̶̶

要处理嵌入式单引号,只需将'([^']+)'部分替换为'([^']+(?:\\'[^']*)*)'作为fge suggests in his great answer

答案 2 :(得分:1)

正则表达式对此有点过分。

改为使用string.Split

myString.Split('\'')[3]

要将其分解一点 - myString.Split('\'')将在传递的字符'中拆分字符串,并返回结果数组。我使用数组中的第四个值来检索标题 - 使用数组下标[3]

上面假设非常严格的字符串结构。


使用您发布的第二个示例,很明显上述方法无效。

答案 3 :(得分:0)

解析像这样的字符串对你有用

String s = " Send Request to BizTalk. CaseID: '2011000264', Title: 'ArchiveDocument Poup - fields.docx', Date: '11.01.2013 13:15:28'";

string[] all = s.Split(',');

foreach( string str in all)
{
  if(str.Contains("Title:"))
  {
     Console.Writeln( (str.Split(':'))[1]);
   }
}