1

我有以下文字:

  1. 向 BizTalk 发送请求。CaseID:'2011000264',标题:'ArchiveDocument Poup - fields.docx',日期:'11.01.2013 13:15:28'
  2. 向 BizTalk 发送请求。标题:'Jallafields.docx',日期:'11.01.2013 13:15:28'

现在我想解析出Title. 我知道这应该很简单,但我很挣扎,所以任何帮助都会非常受欢迎。

4

4 回答 4

4

将您的文本与:

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

并捕获第一组。

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

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

在这里,normalis [^\\'](除反斜杠或单引号外的任何内容)和specialis \\'(反斜杠后跟单引号)。这是经常使用(过度使用?)惰性量词不能做的事情;)

于 2013-01-11T14:44:31.510 回答
3

只是为了一些 Regex/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̶p̶e̶ ̶t̶h̶e̶r̶e̶'̶s̶ ̶n̶o̶ ̶̶'̶̶ ̶i̶n̶ ̶t̶h̶e̶ ̶t̶i̶t̶l̶e̶,̶ ̶t̶h̶o̶u̶g̶h̶.̶.̶.̶

To handle embedded single quotes, just replace the '([^']+)' part with '([^']+(?:\\'[^']*)*)', as fge suggests in his great answer:

于 2013-01-11T14:57:14.940 回答
1

正则表达式对此太过分了。

改用string.Split

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

稍微分解一下 -myString.Split('\'')将通过传入的字符拆分字符串,'在这种情况下并返回一个结果数组。我使用数组中的第四个值来检索标题 - 使用数组下标[3]

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


对于您发布的第二个示例,很明显上述方法不起作用。

于 2013-01-11T14:42:58.467 回答
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]);
   }
}
于 2013-01-11T14:44:17.407 回答